代码之家  ›  专栏  ›  技术社区  ›  FlyingZebra1

X秒后关闭Selenium webdriver

  •  3
  • FlyingZebra1  · 技术社区  · 7 年前

    我在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过期(0.11版vs 0.019版)引起的。
    要在ubuntu上检查您的版本:

    geckodriver --version   #command in terminal
    

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

    2 回复  |  直到 7 年前
        1
  •  2
  •   n1c9    7 年前
    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 如果页面未在给定时间内加载,请关闭程序。

        2
  •  0
  •   undetected Selenium    7 年前

    当页面没有加载并且整个脚本都挂起时,解决方案是 set_page_load_timeout . 下面是有效的代码块和结果 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()