X秒后关闭Selenium webdriver

时间:2018-01-23 04:59:13

标签: python selenium webdriver

我在Ubuntu + Python上使用selenium webdriver(firefox),并遇到一个问题,有时页面无法加载,整个脚本只是挂起。
有没有办法在X秒后强制退出webdriver窗口? 寻找类似下面的代码,但实际上有效。看起来如果webdriver正在等待响应,它将(几乎)无限期地等待。

driver.get(record)
sleep(5)
my_html = driver.page_source #get whatever we have after 5 sec
driver.close() #close driver

注意!:接受的答案是正确的。这个问题是由我的geckodriver过时造成的(v 0.11 vs v.019)。
要在ubuntu上查看您的版本:

geckodriver --version   #command in terminal

更新驱动程序(如果需要),use these steps. Note - Sandeep's answer worked best for me.

2 个答案:

答案 0 :(得分:1)

from selenium import webdriver
from time import sleep

record = "https://www.google.com"
driver = webdriver.Firefox()
driver.set_page_load_timeout(30)
try:
    driver.get(record)
    my_html = driver.page_source #get whatever we have after 5 sec
finally:
    driver.close()

设置页面加载超时,如here所述,将实现您所追求的目标。如果页面未在给定的时间内加载,则会提高TimeoutException,关闭程序。

答案 1 :(得分:0)

当页面未加载且整个脚本只是挂起时,解决方案是诱导 set_page_load_timeout 。这是有效的代码块,结果是 TimeoutException 。无论 TimeoutException 发生或不记得在quit()try{}块内调用 catch{} 方法,以避免悬挂 webdriver 变体的实例。

from selenium import webdriver

driver = webdriver.Chrome(executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.set_page_load_timeout(2)
try :
    driver.get("https://www.booking.com/hotel/in/the-taj-mahal-palace-tower.html?label=gen173nr-1FCAEoggJCAlhYSDNiBW5vcmVmaGyIAQGYATG4AQbIAQzYAQHoAQH4AQKSAgF5qAID;sid=338ad58d8e83c71e6aa78c67a2996616;dest_id=-2092174;dest_type=city;dist=0;group_adults=2;hip_dst=1;hpos=1;room1=A%2CA;sb_price_type=total;srfid=ccd41231d2f37b82d695970f081412152a59586aX1;srpvid=c71751e539ea01ce;type=total;ucfs=1&#hotelTmpl")
    print("URL successfully Accessed")
    driver.quit()
except :
    print("Page load Timeout Occured. Quiting !!!")
    driver.quit()