使用下拉菜单时出错-Python Selenium

问题描述 投票:0回答:1

大家好

我正在尝试使用class_name / xpath从下拉列表中选择一个值但它不起作用。尝试使用ID,但发现ID保持不变变化。在这方面需要帮助。

This is the dropdown where im trying to select short description

下面是我的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver import ActionChains
from selenium.webdriver.support.ui import Select
import time

username = '*****'
password = '*****'

url = 'https://*****.service-now.com/'

driver = webdriver.Chrome("C:\WebDrivers\chromedriver.exe")
driver.get(url)

driver.switch_to.frame('gsft_main')
driver.maximize_window()

driver.find_element_by_id('user_name').send_keys(username)
driver.find_element_by_id('user_password').send_keys(password)
driver.find_element_by_id('sysverb_login').click()

wait = WebDriverWait(driver, 10)
incident = wait.until(EC.visibility_of_element_located((By.XPATH, '//span[contains(text(), 
"Incident")]')))
incident.click()

open = driver.find_element_by_link_text('Open - Unassigned')
open.click()

time.sleep(25)

element = driver.find_element_by_class_name('form-control default-focus-outline')
dropdown.Select(element)
dropdown.select_by_value('short_description')

下面是我复制并获得的元素。复制元素:

<select id="d5f43fd407945410af12f2ae7c1ed05c_select" class="form-control default-focus-outline" aria- 
expanded="false"><option value="zztextsearchyy" selected="SELECTED" role="option">for text</option> 
<option value="number" role="option">Number</option><option value="opened_at" 
role="option">Opened</option><option value="short_description" role="option">Short 
description</option><option value="caller_id" role="option">Caller</option><option value="priority" 
role="option">Priority</option><option value="state" role="option">State</option><option 
value="category" role="option">Category</option><option value="assignment_group" 
role="option">Assignment group</option><option value="assigned_to" role="option">Assigned to</option> 
<option value="sys_updated_on" role="option">Updated</option><option value="sys_updated_by" 
role="option">Updated by</option></select>

通过xpath:

//*[@id="d5f43fd407945410af12f2ae7c1ed05c_select"]

给我以下错误:

DevTools listening on ws://127.0.0.1:49915/devtools/browser/30b98d3d-0779-4d85-86bc-9af3a24726a2
[7012:3772:0417/104241.308:ERROR:browser_switcher_service.cc(238)] XXX Init()
Traceback (most recent call last):
  File "Test.py", line 39, in <module>
    element = driver.find_element_by_class_name('form-control default-focus-outline')
  File "C:\Python38\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 564, in 
find_element_by_class_name
    return self.find_element(by=By.CLASS_NAME, value=name)
  File "C:\Python38\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in 
find_element
return self.execute(Command.FIND_ELEMENT, {
  File "C:\Python38\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
  File "C:\Python38\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in 
check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate 
element: {"method":"css selector","selector":".form-control default-focus-outline"}
  (Session info: chrome=81.0.4044.113)

以上消息有两个不同的错误:

1)[7012:3772:0417 / 104241.308:ERROR:browser_switcher_service.cc(238)]XXX Init()

2)找不到元素:{“方法”:“ css选择器”,“选择器”:“。form-control default-focus-outline”}

需要有关如何解决这些问题的帮助。

python-3.x selenium selenium-webdriver automation servicenow
1个回答
0
投票

尝试使用WebDriverWait解决您的问题。如果您仍然遇到问题,请检查iframe中是否存在您的元素

wait = WebDriverWait(driver, 30)
wait.until(EC.element_to_be_clickable((By.XPATH, "//select[@id='form-control default-focus-outline']/option[text()='Short description']")))

注意:请在解决方案中添加以下内容

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
© www.soinside.com 2019 - 2024. All rights reserved.