gpt4 book ai didi

python Selenium 。如何正确使用 driver.set_page_load_timeout()?

转载 作者:太空宇宙 更新时间:2023-11-03 15:51:13 26 4
gpt4 key购买 nike

from selenium import webdriver

driver = webdriver.Chrome()
driver.set_page_load_timeout(7)

def urlOpen(url):
try:
driver.get(url)
print driver.current_url
except:
return

然后我有 URL 列表并调用上面的方法。

if __name__ == "__main__":
urls = ['http://motahari.ir/', 'http://facebook.com', 'http://google.com']
# It doesn't print anything

# urls = ['http://facebook.com', 'http://google.com', 'http://motahari.ir/']
# This prints https://www.facebook.com/ https://www.google.co.kr/?gfe_rd=cr&dcr=0&ei=3bfdWdzWAYvR8geelrqQAw&gws_rd=ssl

for url in urls:
urlOpen(url)

问题是当网站'http://motahari.ir/ ' 抛出超时异常,网站 ' http://facebook.com ' 和 ' http://google.com ' 总是抛出超时异常。

浏览器一直在等待“motahari.ir/”加载。但是循环继续(它不打开'facebook.com'但等待'motahari.ir/')并继续抛出超时异常

初始化 webdriver 实例需要很长时间,所以我将其从方法中删除,我认为这导致了问题。那么,每当出现超时异常时,我是否应该始终重新初始化 webdriver 实例?如何? (因为我在函数外初始化驱动程序,所以我不能在 except 中重新初始化它)

最佳答案

您只需清除浏览器的 cookie 即可继续。 (抱歉,我没有在您之前的代码中看到这一点)

from selenium import webdriver

driver = webdriver.Chrome()
driver.set_page_load_timeout(7)

def urlOpen(url):
try:
driver.get(url)
print(driver.current_url)
except:
driver.delete_all_cookies()
print("Failed")
return

urls = ['http://motahari.ir/', 'https://facebook.com', 'https://google.com']

for url in urls:
urlOpen(url)

输出:

Failed
https://www.facebook.com/
https://www.google.com/?gfe_rd=cr&dcr=0&ei=o73dWfnsO-vs8wfc5pZI

附言在没有明确异常类型的情况下执行 try...except... 不是很明智,这是否可能掩盖不同的意外错误。

关于 python Selenium 。如何正确使用 driver.set_page_load_timeout()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46680312/

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