【问题标题】:Difficult button to press in selenium硒中难以按下的按钮
【发布时间】:2019-11-21 20:57:57
【问题描述】:

如何按下“f_agreements_all”按钮?

<label for="f_agreements_all">
                    <input type="checkbox" id="f_agreements_all">
                    <span></span>
                    <span class="permText">I accept all</span>
                </label>

不幸的是,找到“f_agreements_all”按钮并单击它不起作用。跨度覆盖整个按钮 17x17px,当 f_agreements_all 为 16x16 时。你知道点击它的可能方式吗?

【问题讨论】:

  • 也许使用javascript来点击它。
  • 你能告诉我怎么做吗?我只知道怎么用python,不知道javascript
  • 硒有driver.execute_script("some javascript code")
  • 我在下面添加了一种方法,但我会编辑您的问题以说明您如何找到按钮并单击它以及您尝试了哪些其他方法。还要添加您正在使用的 Selenium 版本。

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

使用 vanilla JS 的一种方法是:

const checkbox = document.getElementById('f_agreements_all');
checkbox.click();

快速查看Python Selenium 2 WebDriver API 文档,可以试试:

driver.find_element_by_id("f_agreements_all").click()

【讨论】:

    【解决方案2】:

    你能试试下面的 xpath 吗:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    
    button=WebDriverWait(browser, 10).until(
    EC.element_to_be_clickable((By.XPATH, "//li[@class='formCheckbox agreements all-agreements']//span[1]")))
    button.click()
    

    【讨论】:

    • 不幸的是这个错误发生 raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message:
    • 你能分享你的网址吗?如果不是,请检查元素是否在 iframe 中
    【解决方案3】:

    要点击元素,您必须为element_to_be_clickable() 诱导WebDriverWait,您可以使用以下任一解决方案:

    • 使用CSS_SELECTOR

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "label[for='f_agreements_all']"))).click()
      
    • 使用XPATH

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@for='f_agreements_all']"))).click()
      
    • 注意:您必须添加以下导入:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 2023-03-26
      • 2021-06-05
      • 1970-01-01
      相关资源
      最近更新 更多