Selenium webdriver driver.get(url)有时挂起......

时间:2015-01-24 22:35:05

标签: python selenium selenium-webdriver phantomjs

我使用PhantomJS作为webdriver来加载一些网址。通常,程序运行正常。但是,它很多地挂在driver.get(url)上,我想知道我能做些什么呢?

driver = webdriver.PhantomJS(executable_path= path_to_phantomjs_exe, service_log_path= path_to_ghostdriver_log)
driver.get(url)

它会挂起试图永远加载某个网址。但如果我再试一次,它可能会奏效。 webdrivers / phantomJS真的那么不稳定吗?我猜最后的办法是不断调用driver.get(url)直到它最终加载,但这真的是必要的吗?谢谢!

编辑:它似乎只在从列表中加载第一个链接时挂起。然而,它最终会加载,但几分钟后。其余的链接在几秒钟内加载。任何帮助都会很棒。

2 个答案:

答案 0 :(得分:2)

我在这篇文章中回答了这个确切的问题:Geb/Selenium tests hang loading new page但是在这里复制了它,因为我发现这个问题比较老了。

我希望你能找到一种方法在你的代码中实现它,但是当我遇到与PhantomJS类似的情况时,这对我有用。

我跟踪它是挂在driver = webdriver.PhantomJS() # set timeout information driver.set_page_load_timeout(15) 电话上,对我来说这是说某些事情没有通过或者webdriver根本就没有 - 出于某种原因 - 将负载成功命令返回给驱动程序,允许脚本继续。

所以,我添加了以下内容:

driver.get()

我在5(秒)的时间进行了测试,它没有等待足够长的时间,也没有任何事情发生。 15秒对我很有用,但这可能是你应该测试的东西。

除此之外,每当webdriver的选项超时时,我也会创建一个循环,以便.get()可以尝试重新发送while finished == 0: try: driver.get(url3) finished = 1 except: sleep(5) 命令。实现try / except堆叠场景,我能够接近这个:

except TimeoutException as e:
    #Handle your exception here
    print(e)

我见过一个除句柄:

data1

但我对此毫无用处。不过,了解如何捕获特定异常可能会很好。

有关超时的更多选项,请参阅此解决方案:在selenium webdriver.PhantomJS上设置超时

答案 1 :(得分:0)

所以我遇到了同样的问题:

driver = webdriver.PhantomJS(executable_path= path_to_phantomjs_exe, service_log_path= path_to_ghostdriver_log)
driver.get(url)

所以我将service_log_path更改为:

service_log_path=os.path.devnull

这似乎对我有用!!!