Jam*_*eux 6 python selenium phantomjs selenium-webdriver
我正在使用PhantomJS作为webdriver加载一些网址.通常,程序运行正常.然而,它driver.get(url)很多,我想知道我能做些什么呢?
driver = webdriver.PhantomJS(executable_path= path_to_phantomjs_exe, service_log_path= path_to_ghostdriver_log)
driver.get(url)
Run Code Online (Sandbox Code Playgroud)
它会挂起试图永远加载某个网址.但如果我再试一次,它可能会奏效.webdrivers/phantomJS真的那么不稳定吗?我猜最后的手段是不断打电话,driver.get(url)直到它最终加载,但这真的是必要的吗?谢谢!
编辑:它似乎只在从列表中加载第一个链接时挂起.然而,它最终会加载,但几分钟后.其余的链接在几秒钟内加载.任何帮助都会很棒.
我已经在这篇文章中回答了这个确切的问题:Geb/Selenium 测试挂起加载新页面,但复制到这里,因为我看到这个问题更旧。
我希望您能找到一种方法将其实现到您的代码中,但是当我遇到类似 PhantomJS 挂起的情况时,这对我有用。
我追踪到它挂在了一个driver.get()电话上,对我来说,这是在说某些事情没有通过,或者 webdriver 没有 - 由于某种原因 - 将加载成功命令返回给驱动程序,允许脚本继续。
所以,我添加了以下内容:
driver = webdriver.PhantomJS()
# set timeout information
driver.set_page_load_timeout(15)
Run Code Online (Sandbox Code Playgroud)
我已经在 5(秒)的时间内测试过它,但它等待的时间不够长,什么也不会发生。15 秒对我来说效果很好,但这也许是你应该测试的东西。
最重要的是,每当 webdriver 有超时选项时,我还创建了一个循环,以便它driver.get()可以尝试重新发送.get()命令。实施 try / except 堆叠场景,我能够解决这个问题:
while finished == 0:
try:
driver.get(url3)
finished = 1
except:
sleep(5)
Run Code Online (Sandbox Code Playgroud)
我见过一个除了句柄:
except TimeoutException as e:
#Handle your exception here
print(e)
Run Code Online (Sandbox Code Playgroud)
但我没有用这个。不过,知道如何捕获特定异常可能会很好。
有关超时的更多选项,请参阅此解决方案:Setting timeout on selenium webdriver.PhantomJS
小智 3
所以我遇到了同样的问题:
driver = webdriver.PhantomJS(executable_path= path_to_phantomjs_exe, service_log_path= path_to_ghostdriver_log)
driver.get(url)
Run Code Online (Sandbox Code Playgroud)
所以我将 service_log_path 更改为:
service_log_path=os.path.devnull
Run Code Online (Sandbox Code Playgroud)
这似乎对我有用!
| 归档时间: |
|
| 查看次数: |
8116 次 |
| 最近记录: |