【问题标题】:Chrome Webdriver produces timeout in SeleniumChrome Webdriver 在 Selenium 中产生超时
【发布时间】:2017-03-23 16:18:40
【问题描述】:

我正在尝试使用 Selenium 和 Chrome 的 webdriver 抓取一个网站,这一切都很好,直到我切换到更新的 Macbook。突然之间,webdriver 似乎无法识别网站何时真正完全加载。

错误信息如下

TimeoutException:消息:超时:无法从超时确定加载状态:从渲染器接收消息超时:-0.003
(会话信息:chrome=54.0.2840.87)(驱动程序信息: 铬驱动程序=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),平台=Mac OS X 10.12.1 x86_64)

我的代码如下所示:

      import os
      import time
      from selenium import webdriver
      driver = webdriver.Chrome(os.path.join(os.getcwd(), 'chromedriver'))
      driver.get('http://www.clever-tanken.de/')

【问题讨论】:

    标签: google-chrome selenium webdriver


    【解决方案1】:

    这是 chrome webdriver 中的一个已知错误。 Ex1, Ex2

    经过非常简短的阅读,他们的开发人员似乎在重现该错误时遇到了一些麻烦。 @dimkin 提到 CDN 可能是导致该错误的原因。看起来其他人已经报告了这个错误,并且同样怀疑 cdn 内容没有正确解析 DNS。

    我能够隔离问题。就我而言,它只发生在 引用静态文件的页面(HTML 标记中的图像 实例http://cdn.local.myproject.net/static/myimage.png) 在我的 自定义本地 CDN 域。如果我使用相对路径,则不存在 “/static/myimage.png”或本地主机 “http://127.0.0.1/static/myimage.png”所以我认为这是一个 DNS 问题。

    我能够通过使用--dns-prefetch-disable 绕过这个问题 chrome的选项。

    例子:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    chrome_options = Options()
    chrome_options.add_argument("--dns-prefetch-disable")
    driver = webdriver.Chrome(chrome_options=chrome_options)
    

    提到的另一种解决方法看起来很有希望。它不能解决任何问题,但可能会解决问题。它捕获异常并简单地尝试刷新:

    您需要:from selenium.common.exceptions import TimeoutException

    try:
       webDriver.get(url);
    except TimeoutException as ex:
       print(ex.Message)
       webDriver.navigate().refresh()
    

    【讨论】:

    • 关于黄色男孩中代码的问题:六行中的选项在哪里定义?
    • 抱歉,这来自错误报告中的直接剪切和粘贴。我已经更正了代码示例,它现在应该可以运行了。
    • 好的,谢谢。刚刚尝试了上一个,但我仍然收到超时错误。关于第二个代码:我必须在哪里插入这个?看起来像大括号的 Javascript bc....对不起,我是个初学者。
    【解决方案2】:

    虽然听起来很奇怪,但它与语言偏好有关。在我发现我的旧 mac(代码运行良好)和我的新 mac(代码一直在崩溃)之间最后剩下的区别是语言首选项后,我将其更改为英语。现在,代码运行良好!

    【讨论】:

    • 很高兴你修好了!这听起来并没有那么奇怪,它与错误报告中描述的整个“背景中的某些东西无法正确呈现”一致。
    【解决方案3】:

    这表明存在一些网络问题。 面对同样的情况,当从一台主机无法访问我们的 CDN 并且某些文件无法加载时 Chrome/chromedriver/selenium 版本的操作没有帮助。仅通过网络修复解决此问题

    【讨论】:

    • 感谢您的回答,但您能否更具体地谈谈“网络问题”?如果您只是说它与网络有关,那么很难找到解决方法...
    • 我们从 docker 运行测试。某些主题的路线在 fw 中关闭。所以主机刚刚超时。用一些 devtools/fiddler 或类似的东西检查它
    猜你喜欢
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 2020-07-31
    • 2017-03-23
    • 2017-12-25
    • 1970-01-01
    相关资源
    最近更新 更多