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 相关文章推荐
pyramid配置session的方法教程
Nov 27 Python
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
Python实现计算文件夹下.h和.cpp文件的总行数
Apr 23 Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
Python+matplotlib实现填充螺旋实例
Jan 15 Python
Python求解正态分布置信区间教程
Nov 20 Python
Python字符串中删除特定字符的方法
Jan 15 Python
tensorflow 初始化未初始化的变量实例
Feb 06 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
Oct 30 Python
python excel多行合并的方法
Dec 09 Python
Python的logging模块基本用法
Dec 24 Python
Python数据分析之pandas读取数据
Jun 02 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
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
盘点PHP和ASP.NET的10大对比!
2015/12/24 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
JQuery扩展插件Validate—4设置错误提示的样式
2011/09/05 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
女方婚礼新郎答谢词
2014/01/11 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
大学生学年个人总结
2015/02/15 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
500字作文之周记
2019/12/13 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
一文带你探究MySQL中的NULL
2021/11/11 MySQL
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL