我正在使用ChromeDriver和一起使用Selenium,并试图在我的页面上找到一个按钮,该按钮具有以下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,然后才能找到元素。请参阅对答案的评论。
发布于 2018-05-11 19:41:28
按照您共享的对所需元素调用click()的HTML,您可以使用以下css_selector:
driver.find_element_by_css_selector("input.kbutton-white[id$='new'][name$='new'][value='New']").click()解释:
.kbutton-white:类属性。id$='new':id属性以新结尾name$='new':name属性以新结尾value='New':value属性。但是,元素似乎是动态的,因此您可能需要按以下方式导出WebDriverWait:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.kbutton-white[id$='new'][name$='new'][value='New']"))).click()参考文献
您可以在以下网站找到几个相关的详细讨论:
https://stackoverflow.com/questions/50298553
复制相似问题