【问题标题】:Button click only works when time.sleep added for selenium python仅当为 selenium python 添加 time.sleep 时,按钮单击才有效
【发布时间】:2020-07-13 02:29:34
【问题描述】:

python(selenium) 中的click() 属性仅在添加time.sleep() 时有效。
主脚本已经在开始时指定了隐式wait
有人可以分享一下为什么会发生这种情况的原因吗?

下面是我写的python代码。

time.sleep(10)
driver.find_element(By.ID, 'tab-all').click()

【问题讨论】:

  • 欢迎来到 Stack Overflow。如果您使用Tour 并阅读How To Ask,您将在这里获得更好的体验,然后使用创建Minimal, Reproducible Example 所需的详细信息编辑您的问题。也请附上网站的链接
  • 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图)放在有问题的(不是评论)中。还有其他有用的信息。

标签: python selenium button web-scraping click


【解决方案1】:

time.sleep() 是一种不好的做法。发生这种情况是因为 selenium 尝试在按钮可见之前单击它。为了在发现按钮后立即单击按钮,请使用以下代码:

from selenium.webdriver.support import expected_conditions as EC

myElem = WebDriverWait(browser,delay).until(EC.presence_of_element_located((By.ID, 'tab-all')))
myElem.click()

如果上面的代码你不是很清楚,this 一定能帮到你。

【讨论】:

    【解决方案2】:

    试试这个:

    from selenium import webdriver
    webdriver.support.ui.WebDriverWait(driver, 10).until(lambda driver:driver.find_element(By.ID, 'tab-all').click())
    

    【讨论】:

      【解决方案3】:

      现在已经解决了......我发现虽然元素是可见的,但它没有完全加载......它需要一些时间才能完全加载......它之前用于部分加载示例'All (11)' 然后完全加载到 'All (123434)' 因此我无法点击它....现在我等待并检查文本是否已从初始加载更改然后我点击它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-19
        • 1970-01-01
        • 2021-11-24
        • 2017-06-25
        • 1970-01-01
        • 2021-12-28
        相关资源
        最近更新 更多