selenium切换标签页解决get超时问题的完整代码


Posted in Python onAugust 30, 2020

selenium切换标签页解决get超时问题的完整代码

从 gif 直观地感受一下效果

我有大量 url 需要访问,但是有些 url 会超时

为了避免超时,设置driver.set_page_load_timeout(3)限时3秒,一旦超时就会产生 TimeoutException

而且超时后标签页就卡柱了,只能通过 driver.close()关闭

如果你只有一个标签页,关闭就直接退出了,还得重启

自然想到先保留一个备用的标签,原标签超时需要关闭的时候就切换过来,然后再关闭,并打开新标签,保证任何时候都有两个标签页可用!!

def visit(urls, timeout=3):
 driver.implicitly_wait(timeout) # 操作、获取元素时的隐式等待时间
 driver.set_page_load_timeout(timeout) # 页面加载超时等待时间
 
 main_win = driver.current_window_handle
 
 for url in urls:
  all_win = driver.window_handles
  try:
   if len(all_win) == 1:
    driver.execute_script('window.open();')
   driver.get(url)
   # 页面处理
   pass
   
  except Exception:
   for win in all_win:
    if main_win != win:
     driver.close() # 关闭卡住的标签
     driver.switch_to.window(win) # 切换到备用标签
     main_win = win # 切换到备用标签
     break

完整代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.chrome.options import Options
import time
import requests
import zipfile
import os

def un_zip(file_name, to_dir='./'):
 """unzip zip file"""
 zip_file = zipfile.ZipFile(file_name)
 if os.path.isdir(to_dir):
  pass
 else:
  os.mkdir(to_dir)
 for names in zip_file.namelist():
  zip_file.extract(names, to_dir)
 zip_file.close()

 
def download_driver(to_dir='./', version=''):
 print('install chrome-driver first')
 url = 'http://npm.taobao.org/mirrors/chromedriver/LATEST_RELEASE'
 if len(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"
 with open(download_zip, "wb") as code:
  code.write(r.content)
 un_zip(download_zip, to_dir)
 os.remove(download_zip)


try:
 driver = webdriver.Chrome()
except Exception as e:
 download_driver(to_dir='./', version='76')
 driver = webdriver.Chrome()

with open("url.txt", 'r') as file:
 urls = [ line.strip('\n') for line in file.readlines()]

visit(urls)

for i in driver.window_handles:
 driver.switch_to.window(i)
 driver.close()

总结

到此这篇关于selenium切换标签页解决get超时问题的文章就介绍到这了,更多相关selenium切换标签页解决get超时内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
修改Python的pyxmpp2中的主循环使其提高性能
Apr 24 Python
基于Python pip用国内镜像下载的方法
Jun 12 Python
详解如何用django实现redirect的几种方法总结
Nov 22 Python
如何使用python进行pdf文件分割
Nov 11 Python
python读取tif图片时保留其16bit的编码格式实例
Jan 13 Python
python代码实现将列表中重复元素之间的内容全部滤除
May 22 Python
python利用线程实现多任务
Sep 18 Python
Python中pass的作用与使用教程
Nov 13 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
Jan 12 Python
python解决OpenCV在读取显示图片的时候闪退的问题
Feb 23 Python
Python实现滑雪小游戏
Sep 25 Python
Python&Matlab实现灰狼优化算法的示例代码
Mar 21 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 #Python
python开根号实例讲解
Aug 30 #Python
python一些性能分析的技巧
Aug 30 #Python
python脚本第一行如何写
Aug 30 #Python
golang/python实现归并排序实例代码
Aug 30 #Python
python创建文本文件的简单方法
Aug 30 #Python
python 中的9个实用技巧,助你提高开发效率
Aug 30 #Python
You might like
在线竞拍系统的PHP实现框架(一)
2006/10/09 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
用jQuery技术实现Tab页界面之二
2009/09/21 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
jQuery地图map悬停显示省市代码分享
2015/08/20 Javascript
jQuery+HTML5美女瀑布流布局实现方法
2015/09/21 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
Python绘制3D图形
2018/05/03 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
求职信的最佳写作思路
2014/02/01 职场文书
给领导的检讨书
2014/02/16 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
2015年元旦活动总结
2014/05/09 职场文书
环保倡议书500字
2014/05/15 职场文书
计算机相关专业自荐信
2014/07/02 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
工作态度不好检讨书
2015/05/06 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏