大家好
我正在尝试使用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”}
需要有关如何解决这些问题的帮助。
尝试使用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