【问题标题】:Handle a click when hyperlinks are not visible当超链接不可见时处理点击
【发布时间】:2020-12-07 18:44:10
【问题描述】:

我是 selenium 的新手,正在尝试使用 selenium 和 python 自动化一些网络点击

下面有一个链接,打开对话框

<li id='upFol'>
<a href='#' title='documents'></a>
.....
</li>

我在 python 中有以下代码

upload = WebDriverWait(driver,5).until(EC.presence_of_element_located((By.XPATH,"//*[@id='upFol']/a")))
upload.click()

这找到了元素并且可以看到点击但是没有打开对话框

有没有办法处理这种情况

【问题讨论】:

  • 弹出窗口被禁用了吗?
  • @PDHide:当我检查页面源时,弹出窗口的 id 也不可见

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

您需要为element_to_be_clickable() 诱导WebDriverWait 而不是presence_of_element_located(),您可以使用以下Locator Strategies 之一:

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li#upFol > a[title='documents']"))).click()
    
  • 使用XPATH

    WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//li[@id='upFol']/a[@title='documents']"))).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(driver, 2).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='submit']"))).click() 做同样的事情,但它给了我例外 TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException。我也试过让定时器休眠。你有什么我可以研究的提示吗?谢谢
猜你喜欢
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 2016-04-20
  • 2020-12-04
相关资源
最近更新 更多