【问题标题】:Click don't working for enabled element in Selenium单击不适用于 Selenium 中的已启用元素
【发布时间】:2022-01-10 07:26:16
【问题描述】:

我希望页面上的某些元素已被点击。但是 Selenium 点击不起作用。我的这部分代码:

username_form = driver.find_element_by_id('form3-username')
    password_form = driver.find_element_by_id('form3-password')
    username_form.send_keys('SomeLogin')
    password_form.send_keys('SomePass')
    driver.find_element_by_xpath("//div[@class='one-factor']/button").click()
    element = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH,  "//div/a[@id='notify-toggle' and not(@disabled)]"))
    )
    element.click()

并分割我正在处理的页面:

<a id="notify-toggle" class="toggle link">
    <span title="Уведомления" class="data-count" data-count="0" data-icon="">
    </span>
</a>

Promlem 是 element.click() 不起作用。我熟悉了我的问题的一些解决方案,但我发现它对我不起作用。我尝试将 xpath 表达式与not (@disabled) 一起使用 和其他解决方案,但没有人对我有帮助。我不知道为什么click 不起作用,我很乐意得到任何提示

【问题讨论】:

  • 你有没有尝试过更深层次的,我的意思是尝试做//div/a/span而不是//div/a

标签: javascript python html selenium


【解决方案1】:

针对element_to_be_clickable()的内部&lt;span&gt;诱导WebDriverWait,您可以使用以下任一Locator Strategies

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.toggle.link#notify-toggle span.data-count:not(disabled)[title][data-icon]"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='toggle link' and @id='notify-toggle']//span[@class='data-count' and @title][@data-icon and not(@disabled)]"))).click()
    
  • 注意:您必须添加以下导入:

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

参考文献

您可以在以下位置找到一些相关的详细讨论:

【讨论】:

  • 我尝试了您的两种解决方案,但仍然无法正常工作(
  • 也许这很重要,如果我添加time.sleep(1),那么即使使用我的旧代码也一切正常。我认为,这意味着该按钮仍处于禁用状态,我不明白为什么
猜你喜欢
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-19
  • 2019-10-25
  • 1970-01-01
相关资源
最近更新 更多