【问题标题】:Selenium wait visibility_of_all_elements_located times outSelenium 等待 visibility_of_all_elements_located 超时
【发布时间】:2019-07-09 21:24:51
【问题描述】:

我正在测试如何在搜索结果页面中获取所有结果,以了解如何使用 Selenium。登录该站点后,我可以在普通浏览器中查看该特定页面的完整源代码,包括完成页面的一行的 div。

当然,对于较长的结果集,普通浏览器不会显示,因为 Javascript 加载延迟,所以我寻找一种方法让 Selenium 等到所有结果加载。

我基于以下等待代码:https://selenium-python.readthedocs.io/waits.html

以下会引发此特定页面的超时错误:

try:
    element = WebDriverWait(driver,100).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "_3t0c")))

finally:
    print('done with webdriver wait anyway')

抛出的错误是:

in <module>
    element = WebDriverWait(driver, 100).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "_3t0c")))
  File "..longFilePath....\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:

Message: 之后没有任何显示

编辑: 由于缺少括号,下面的错误是不同的,如下@QHarr 谢谢:

in <module>
    element = WebDriverWait(driver,30).until(EC.visibility_of_all_elements_located(By.CLASS_NAME, "_3t0c"))
TypeError: __init__() takes 2 positional arguments but 3 were given

注意,如果我注释掉这个 try 循环,我仍然可以在这个页面上得到所有结果。

否则,我尝试让 Selenium 等待结果 div 类的结束,在 timeout = 100 时也出现超时错误,我可以在 Selenium 中看到页面加载可能不到 20 秒。

但我只是尝试使用不同的 class="_32mo",它似乎在列表中每个名称都有一个,这显然不会超时。

我是 Selenium 的新手,对网络抓取确实很陌生,我只是好奇,谁能解释一下可能发生的情况?

【问题讨论】:

  • Facebook 不允许您抓取它们。使用 API。如果您在 API 中做不到,请不要这样做。

标签: python selenium web-scraping webdriverwait


【解决方案1】:

对于显示的错误,该方法需要一个元组,因此您需要更多括号。试试

WebDriverWait(driver,30).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "_3t0c")))

【讨论】:

    【解决方案2】:

    TypeError:接受 2 个位置参数,但给出了 3 个

    将定位器的类型和值赋给变量 例如: a =(By.CLASS_NAME, "_3t0c")

    然后将此变量传递到括号中 例如:

    a = (By.CLASS_NAME, "_3t0c")
    wait = WebDriverWait(driver,30)
    element = wait.until(EC.visibility_of_all_elements_located(a))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      • 2012-04-19
      • 2012-09-20
      • 1970-01-01
      相关资源
      最近更新 更多