Python Selenium webdriver驱动程序。获取(url)挂起。。。有时

Python Selenium webdriver驱动程序。获取(url)挂起。。。有时,python,selenium,selenium-webdriver,phantomjs,Python,Selenium,Selenium Webdriver,Phantomjs,我使用PhantomJS作为Web驱动程序来加载一些URL。通常,程序运行良好。但是,它经常挂在driver.get(url)上,我想知道我是否可以对此做些什么 driver = webdriver.PhantomJS(executable_path= path_to_phantomjs_exe, service_log_path= path_to_ghostdriver_log) driver.get(url) 它将永远挂起尝试加载某个url。但如果我再试一次,它可能会奏效。webdrive

我使用PhantomJS作为Web驱动程序来加载一些URL。通常,程序运行良好。但是,它经常挂在driver.get(url)上,我想知道我是否可以对此做些什么

driver = webdriver.PhantomJS(executable_path= path_to_phantomjs_exe, service_log_path= path_to_ghostdriver_log)
driver.get(url)
它将永远挂起尝试加载某个url。但如果我再试一次,它可能会奏效。webdrivers/phantomj真的那么不稳定吗?我想最后的办法是不断地调用
driver.get(url)
,直到它最终加载,但这真的是必要的吗?谢谢


编辑:它似乎只有在从列表中加载第一个链接时才会挂起。不过,它最终还是加载了,但几分钟之后。其余链接在几秒钟内加载。任何帮助都会很好。

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

driver = webdriver.PhantomJS(executable_path= path_to_phantomjs_exe, service_log_path= path_to_ghostdriver_log)
driver.get(url)
因此,我将服务日志路径更改为:

service_log_path=os.path.devnull

这似乎对我有用

我在这篇文章中回答了这个问题:但我把它复制到这里,因为我发现这个问题更老了

我希望您能找到一种方法来在代码中实现这一点,但这正是我在使用PhantomJS时遇到的类似情况

我跟踪到它挂起在一个
driver.get()
调用上,这对我来说意味着有些东西没有通过,或者webdriver因为某种原因没有将load successful命令返回给驱动程序,从而允许脚本继续

因此,我添加了以下内容:

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

您是否尝试使用Chrome或Firefox,是否遇到相同的问题?是的,页面几乎立即加载,因此这不是长时间加载页面的问题。幻影似乎有一段艰难的时光我猜。。。关于如何诊断/调试/修复有什么想法吗?我假设您有最新的phantomjs,并且您已经尝试重新安装了它?是的,这是正确的。它过去没有这样做。一切都很顺利,现在突然需要几分钟才能加载第一个url。每次我打断它,最后一个调用就是
data=self.\u sock.recv(self.\u rbufsize)
,我猜这就是它所挂起的。我不知道这是否有帮助。编辑:同样,它在我的mac电脑上也可以正常工作,它在同一个连接上。我也有类似的问题(请参阅)-如果将“-debug=true”选项传递到phantomjs命令行,您会看到什么?