首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ChromeDriver (Selenium)在Python中用CSS选择器查找元素

用ChromeDriver (Selenium)在Python中用CSS选择器查找元素
EN

Stack Overflow用户
提问于 2018-05-11 18:51:00
回答 1查看 7.8K关注 0票数 3

我正在使用ChromeDriver和一起使用Selenium,并试图在我的页面上找到一个按钮,该按钮具有以下HTML:

代码语言:javascript
复制
<input id="j_id0:SiteTemplate:j_id255:new" type="submit" name="j_id0:SiteTemplate:j_id255:new" value="New" class="kbutton-white">

我唯一知道的常量是以"new“结尾的id和名称,我试图使用以下代码来标识和单击该元素:

代码语言:javascript
复制
test_runner.driver.find_element_by_css_selector('[id*=new]').click()

但是,当我运行代码时,我会得到这个错误:

代码语言:javascript
复制
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,然后才能找到元素。请参阅对答案的评论。

EN

回答 1

Stack Overflow用户

发布于 2018-05-11 19:41:28

按照您共享的对所需元素调用click()的HTML,您可以使用以下css_selector

代码语言:javascript
复制
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:

代码语言:javascript
复制
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.kbutton-white[id$='new'][name$='new'][value='New']"))).click()

参考文献

您可以在以下网站找到几个相关的详细讨论:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50298553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档