我在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.
答案 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()