selenium切换标签页解决get超时问题的完整代码
从gif直观地感受一下效果
我有大量url需要访问,但是有些url会超时
为了避免超时,设置driver.set_page_load_timeout(3)限时3秒,一旦超时就会产生TimeoutException
而且超时后标签页就卡柱了,只能通过driver.close()关闭
如果你只有一个标签页,关闭就直接退出了,还得重启
自然想到先保留一个备用的标签,原标签超时需要关闭的时候就切换过来,然后再关闭,并打开新标签,保证任何时候都有两个标签页可用!!
defvisit(urls,timeout=3):
driver.implicitly_wait(timeout)#操作、获取元素时的隐式等待时间
driver.set_page_load_timeout(timeout)#页面加载超时等待时间
main_win=driver.current_window_handle
forurlinurls:
all_win=driver.window_handles
try:
iflen(all_win)==1:
driver.execute_script('window.open();')
driver.get(url)
#页面处理
pass
exceptException:
forwininall_win:
ifmain_win!=win:
driver.close()#关闭卡住的标签
driver.switch_to.window(win)#切换到备用标签
main_win=win#切换到备用标签
break
完整代码
fromseleniumimportwebdriver
fromselenium.webdriver.common.byimportBy
fromselenium.webdriver.common.keysimportKeys
fromselenium.webdriver.supportimportexpected_conditionsasEC
fromselenium.webdriver.support.waitimportWebDriverWait
fromselenium.webdriver.chrome.optionsimportOptions
importtime
importrequests
importzipfile
importos
defun_zip(file_name,to_dir='./'):
"""unzipzipfile"""
zip_file=zipfile.ZipFile(file_name)
ifos.path.isdir(to_dir):
pass
else:
os.mkdir(to_dir)
fornamesinzip_file.namelist():
zip_file.extract(names,to_dir)
zip_file.close()
defdownload_driver(to_dir='./',version=''):
print('installchrome-driverfirst')
url='http://npm.taobao.org/mirrors/chromedriver/LATEST_RELEASE'
iflen(version)>0:
url='http://npm.taobao.org/mirrors/chromedriver/LATEST_RELEASE_'+version
version=requests.get(url).content.decode('utf8')
driver_file='http://npm.taobao.org/mirrors/chromedriver/'+version+'/chromedriver_win32.zip'
r=requests.get(driver_file)
download_zip="chromedriver_win32.zip"
withopen(download_zip,"wb")ascode:
code.write(r.content)
un_zip(download_zip,to_dir)
os.remove(download_zip)
try:
driver=webdriver.Chrome()
exceptExceptionase:
download_driver(to_dir='./',version='76')
driver=webdriver.Chrome()
withopen("url.txt",'r')asfile:
urls=[line.strip('\n')forlineinfile.readlines()]
visit(urls)
foriindriver.window_handles:
driver.switch_to.window(i)
driver.close()
总结
到此这篇关于selenium切换标签页解决get超时问题的文章就介绍到这了,更多相关selenium切换标签页解决get超时内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。