python - 如何使用 Selenium 和 Chromedriver 查找元素

标签 python selenium xpath css-selectors webdriverwait

我是 Selenium 新手。我在 OSX 上使用 anaconda 的 Selenium 3.141。我的Chrome版本是71.0,Chromedriver版本是2.45。我的目标是使用 Selenium 单击网页上带有“接受”的按钮。我可以使用可执行文件实例化 webdriver 对象,并使用它来加载有问题的页面。然后我等了20秒。这是下一个失败的部分。代码无法找到必须单击的元素。附件是与各个级别和子级别的按钮相关的元素的两张图像,其中突出显示了检查后的部分。我尝试过诸如

之类的变体
accept_button = driver.find_element_by_class_name('flex-x.static.h- center.v-center.bt-button.filled')

accept_button = driver.find_element_by_class_name('Accept')

还有其他一些无济于事。请帮忙。

按钮框架:

button frame

接受矩形:

accept rectangle

最佳答案

所需的元素是 Angular元素,因此要定位/单击,您必须引发 WebDriverWait 才能使 元素可单击,并且您可以使用以下解决方案之一:

  • 使用CSS_SELECTOR:

    accept_button = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "bt-button.Aceept.ng-isolate-scope[mutable-label='prelogin.translations.Accept']")))
    
  • 使用XPATH:

    accept_button = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//bt-button[@class='Aceept ng-isolate-scope focused' and @mutable-label='prelogin.translations.Accept']")))
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

关于python - 如何使用 Selenium 和 Chromedriver 查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53952972/

相关文章:

python - 如何将 float 四舍五入到某个小数位?

java - 悬停元素列表 - Selenium Java WebDriver

Python with Selenium - 由于网站上位置的随机化,无法找到并单击此特定元素

javascript - "Object doesn' t 支持属性或方法”当我尝试调用插件时

javascript - 编写一个遍历二叉树的迭代器

python - 通过嵌套键合并嵌套字典?

Python argparse - 创建没有标签的子命令

selenium - 如何在范围报告而不是方法名称下显示测试名称?

java - 如何使用 Html 单元和 Xpath 获取段落元素

xml - 在 XSLT 中查找两个日期时间之间的差异