gpt4 book ai didi

python - 将 chromedriver 与 Selenium 结合使用时,如何纠正超时错误?

转载 作者:行者123 更新时间:2023-11-30 22:17:29 26 4
gpt4 key购买 nike

我可能在这里遗漏了一些简单的东西,但我已经尝试了很多,但没有任何运气。我是 Selenium 的新手,无法纠正以下问题。当使用 get() 导航到网页时,我不断收到超时消息。页面加载正确,但在加载页面上的所有内容后(我认为这可能与广告加载所需的加载时间有关),我收到此错误。

selenium.common.exceptions.TimeoutException:消息:超时 ( session 信息: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()

最佳答案

根据您的问题,使用 get() 导航到网页时,显然页面已正确加载,但实际上JavaScriptAjax 调用 可能尚未完成,Web 客户端 可能尚未实现'document.readyState'也等于“完整”

但是您似乎在代码中引入了set_page_load_timeout(10),以防整个页面加载(包括JSAjax) 10 秒内未完成将导致 TimeoutException 。这正是您的情况发生的情况。

解决方案

  • 如果您的用例对页面加载超时没有限制,请删除代码行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()
  • 控制台输出:

    Page load Timeout Occured. Quiting !!!

您可以在How to set the timeout of 'driver.get' for python selenium 3.8.0?中找到关于set_page_load_timeout()的详细讨论。

关于python - 将 chromedriver 与 Selenium 结合使用时,如何纠正超时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49640060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com