【问题标题】:How to find the element for the filter button using Selenium WebDriver for IE and Python:如何使用 Selenium WebDriver for IE 和 Python 查找过滤器按钮的元素:
【发布时间】:2020-06-28 06:22:36
【问题描述】:

我对 StackOverflow 和一般编程很陌生。

我正在使用 Selenium 自动化我公司的计费系统(仅适用于 IE),我需要按下过滤器按钮才能在页面上显示我们的数据库所说的内容。为了找到元素,我尝试了许多 xpath 变体,但似乎没有任何效果。这是过滤器按钮的 HTML 行:

<input style="background:green;color:white;" type=button class=bttn onclick="form1.formfilter.value='1';form1.submit();" value="FILTER">

有没有办法通过value="FILTER"找到这个元素?

我已阅读文档并寻找此答案,但我没有找到它,或者我只是没有搜索正确的关键字。

【问题讨论】:

    标签: python selenium-webdriver xpath css-selectors webdriverwait


    【解决方案1】:

    要使用value="FILTER" 属性点击FILTER 按钮,您必须为element_to_be_clickable() 诱导WebDriverWait,您可以使用以下Locator Strategies 之一:

    • 使用CSS_SELECTOR

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.bttn[value='FILTER']"))).click()
      
    • 使用XPATH

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='bttn' and @value='FILTER']"))).click()
      
    • 注意:您必须添加以下导入:

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

    【讨论】:

    • 感谢您的回答。后来我意识到我已经为按下过滤器按钮编写的代码正在工作,但是您使用 WebDriverWait 的建议解决了我遇到的另一个问题,即程序运行速度比 IE 加载速度快。我一直在用 time.sleep() 解决它,但是如果互联网很慢,程序仍然比 IE 运行得快。现在我可以使用 WebDriverWait 来确保页面在程序继续运行之前已加载并准备就绪。
    猜你喜欢
    • 2023-01-22
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    • 2014-08-13
    相关资源
    最近更新 更多