繁体   English   中英

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

[英]Selenium webdriver driver.get(url) hangs… sometimes

我正在使用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)直到它最终加载,但这真的是必要的吗? 谢谢!

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

我已经在这篇文章中回答了这个确切的问题: Geb / Selenium测试挂起加载新页面但是在这里复制它因为我看到这个问题比较老了。

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

我跟踪它是挂在一个driver.get()调用,这对我来说是说某些事情没有通过或webdriver只是没有 - 出于某种原因 - 将加载成功命令返回给驱动程序,允许脚本继续。

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

driver = webdriver.PhantomJS()

# set timeout information
driver.set_page_load_timeout(15)

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

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

while finished == 0:
    try:
        driver.get(url3)
        finished = 1
    except:
        sleep(5)

我见过一个除了句柄:

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

但我对此毫无用处。 但是,知道如何捕获特定的异常可能会很好。

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

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

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

这似乎对我有用!!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM