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实例?如何? (由于我在函数之外初始化了驱动程序,我无法重新初始化它除外)
答案 0 :(得分:2)
在继续操作之前,您只需清除浏览器的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
P.S。如果没有明确的异常类型try...except...
,这可能会掩盖不同的意外错误。