2016-11-09 76 views
1

我想凑使用Selenium和Chrome的webdriver的一个网站,这一切工作正常,直到我切换到一个新的MacBook。突然之间,网络驱动似乎无法识别网站实际上完全加载的时间。铬的webdriver产生超时硒

错误消息去如下

TimeoutException异常:消息:超时:无法确定从超时加载状态:超时从渲染器接收到消息:-0.003
(会话信息:铬= 54.0.2840.87) (驱动程序信息: chromedriver = 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/') 

回答

1

那么奇怪,因为它听起来,它与语言的喜好做。在我发现我的旧mac(代码工作正常)和我的新Mac(代码不断崩溃)之间的最后剩余差异是语言偏好之后,我将其改为英文。现在,代码运行良好!

+0

很高兴您解决它!这听起来并不奇怪,它与bug报告中描述的整个“背景中的某些东西无法正确呈现”一致。 – jinksPadlock

0

这表示一些网络问题。 面对同样的,当从一个主机我们的CDN是不能访问和一些文件无法加载 镀铬/ chromedriver /硒版本的操作不会有帮助。它仅与修复网络

+0

谢谢你的答案,但你可以更具体一点关于“网络问题”?如果你只是说它是关于网络的话,找到一个修复程序是很难的... –

+0

我们从码头运行测试。来自某些主题的路线以fw结束。所以主持人刚刚超时。 用一些devtools/fiddler或类似的东西检查它 – dimkin

3

这是铬webdriver的一个已知的bug解决。 Ex1Ex2

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

我能够隔离问题。在我的情况正在发生仅 网页上我的 定制的本地CDN域引用一个静态文件(在HTML标记的图像 例如http://cdn.local.myproject.net/static/myimage.png)。如果我使用的相对路径 “/static/myimage.png”或本地主机 “http://127.0.0.1/static/myimage.png”的不存在,所以我想这是一个DNS 问题。

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

实施例:

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() 
+1

关于黄色男孩代码的问题:你在哪里定义了六行中的选项? –

+0

对不起,这是来自bug报告的直接剪切和粘贴。我已经纠正了代码示例,它现在应该运行。 – jinksPadlock

+0

好的,谢谢。刚刚尝试了上面的一个,但仍然出现超时错误。关于第二个代码:我必须在哪里插入此代码?看起来像大括号的Javascript bc ....对不起,这样的初学者。 –