我正在使用带有Python的Selenium的ChromeDriver,我试图在我的页面上找到一个具有以下HTML的按钮:
<input id="j_id0:SiteTemplate:j_id255:new" type="submit" name="j_id0:SiteTemplate:j_id255:new" value="New" class="kbutton-white">
我唯一知道的常量是以"new"结尾的 id 和名称,我正在尝试使用以下代码来识别并单击该元素:
test_runner.driver.find_element_by_css_selector('[id*=new]').click()
但是,当我运行代码时,我收到此错误:
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id*=new]"}
我在这里犯了什么错误?
更新:这个元素在 iframe 内,我必须先切换到 iframe,然后才能尝试找到该元素。请参阅评论以获取答案。
根据您共享的 HTML 以调用所需元素上的click()
,您可以使用以下css_selector
:
driver.find_element_by_css_selector("input.kbutton-white[id$='new'][name$='new'][value='New']").click()
解释 :
.kbutton-white
:类属性。id$='new'
:id属性以new结尾name$='new'
:name属性以new结尾value='New'
:值属性。
但似乎该元素是动态的,因此您可能需要诱导WebDriverWait,如下所示:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.kbutton-white[id$='new'][name$='new'][value='New']"))).click()
<小时 />参考资料
您可以在以下位置找到一些相关的详细讨论:
- Java Selenium Webdriver 表达式通过以 ccs 开头和结尾的 ccs 查找动态元素
- 如何使用 xpath/css 选择器在 drupal 8 网站中单击动态链接,同时通过 Selenium 和 Python 实现自动化
- 如何使用 Selenium 和 Python 获取内部带有动态部分的选择器?