我可能会遗漏一些简单的东西,但我已经尝试了很多没有任何运气。我是硒的新手,我无法纠正以下问题。使用get()导航到网页时,我不断收到超时消息。页面加载正确,但页面上的所有内容加载后(我认为它可能与加载广告加载所需的时间有关)我收到此错误。
selenium.common.exceptions.TimeoutException:消息:超时 (会话信息:chrome = 65.0.3325.181) (驱动程序信息:chromedriver = 2.36.540470(e522d04694c7ebea4ba8821272dbef4f9b818c91),platform = Windows NT 10.0.16299 x86_64)
我尝试了以下方法;移动chromedriver位置,尝试旧版本的selenium,等待,隐式等待,time.sleep等。任何输入都会很棒,因为这看起来很简单,我想尽快解决。
有问题的代码:
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome("Path\To\chromedriver.exe")
driver.set_page_load_timeout(10)
driver.get("https://www.website.com")
driver.find_element_by_name("name").send_keys("com")
driver.find_element_by_name("word").send_keys("pw")
driver.find_element_by_id("idItem").click()
driver.find_element_by_name("word").send_keys(Keys.ENTER)
#driver.implicitly_wait(10)
driver.get("https://www.website2.com")
--------------Error here, never gets past this point------------
time.sleep(10)
driver.close()
答案 0 :(得分:1)
根据您的问题,当使用get()导航到网页时,可能看起来页面已正确加载,但事实上 JavaScripts < / em>和 Ajax Calls 可能尚未完成, Web Client 可能未达到 'document.readyState'
等于{{1} } 也是。
但是您的代码中似乎已经引发了 set_page_load_timeout(10),导致整个页面加载(包括 JS 和 Ajax )没有在10秒内完成将导致TimeoutException。这恰好发生在你的情况下。
"complete"
如果 usecase 依赖于页面加载超时,请捕获异常并调用set_page_load_timeout(10)
以正常关闭,如下所示:
代码块:
quit()
控制台输出:
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r'C:\path\to\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()
您可以在How to set the timeout of 'driver.get' for python selenium 3.8.0?
中找到有关Page load Timeout Occured. Quiting !!!
的详细讨论