Python selenium页面加载慢超时的解决方案


Posted in Python onMarch 18, 2020

开发环境:

win10-64  python2.7.16  chrome77

from selenium import webdriver
driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get('http://全部加载完成超级慢的网站')

user = 'abc'
pwd = '123

driver.find_element_by_id('email').send_keys(user)
driver.find_element_by_id('pass').send_keys(pwd)

先看这样一段代码

当执行了get以后,除非网站全部加载完成,否则你只能乖乖等,什么都不能干,这是整个程序是阻塞的,get不完就别想进行下面操作

这个等待可能是5分钟或者更久

其实5秒钟的时候界面就已经打开了,然后他还在加载些什么js,img,等待速度超慢的,但是网页人工是可以操作

那么有没有什么办法呢,网上找了一通,给出了很多解决方案

首先是这货(下面是我复制的):

from selenium import webdriver
driver=webdriver.Chrome()
driver.set_page_load_timeout(5)
driver.set_script_timeout(5)#这两种设置都进行才有效
try:
  d.get(s)
except:
  d.execute_script('window.stop()')#这句话好像没什么软用

可以在页面停止加载后继续操作了

driver.set_page_load_timeout(5)这玩意一设置,没问题,5秒后网页确实停止了,但是driver也死了,不管运行什么都是timeout,还说try一下,driver是死透了,只能重新来
不知道是selenium更新了还是他自己没测试还是chrome更新了,现在这么设置就是找死的

注意:使用set_page_load_timeout时候,当页面未加载出任何东西的时候(往往是html源码未加载),因为超时而停止,会导致driver失效,
后面的driver都不能操作,所以超时设置应该至少保证页面内容加载出来一部分,设置超时不宜过短,如下图在页面此种状态下停止加载后driver失效。

不错,是有人也说了,不能设置太短,会失效,但是我可以说,你设置5分钟照样失效,只要超时一次,driver就完蛋,直接翻车

接下来是另一个方法

# coding = utf-8
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
import time

driver = webdriver.Chrome()
class button():
  def __call__(self, driver):
    if driver.find_element_by_id('js_love_url'):
      return True
    else:
      return False 

driver.implicitly_wait(60)
time_start = time.time()
driver.get('https://www.163.com/')

# driver.find_element_by_id('js_love_url').click()
WebDriverWait(driver,2,0.5).until(button()) 
time_end = time.time()
print('access time is : ', time_end - time_start)
time.sleep(2)
driver.quit()

用WebDriverWait进行操作,不过我测试下来,driver.get()不执行完,下面的代码根本就不会执行,所以还是不行

找了各种方法,各种操作,都失败了,总算今天找到了正确的方法

原理非常简单:driver.get()这个操作,改成不阻塞的就行了,这样打开网页就操作完成了,不需要等他加载

下面我可以直接等待需要的元素出现即可进行操作

配置也是很简单

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

#get直接返回,不再等待界面加载完成
desired_capabilities = DesiredCapabilities.CHROME
desired_capabilities["pageLoadStrategy"] = "none"

driver = webdriver.Chrome(executable_path='chromedriver.exe')

配置一个参数,就是页面加载策略,系统默认是等待,就是等他加载完,直接设置成none,就是不等待,这样就是get操作完后直接就是结束了

到此这篇关于Python selenium页面加载慢超时的解决方案的文章就介绍到这了,更多相关Python selenium加载慢内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python回溯法实现数组全排列输出实例分析
Mar 17 Python
python判断图片宽度和高度后删除图片的方法
May 22 Python
详解Python中的__new__、__init__、__call__三个特殊方法
Jun 02 Python
使用Python设计一个代码统计工具
Apr 04 Python
python实现网站用户名密码自动登录功能
Aug 09 Python
django+echart数据动态显示的例子
Aug 12 Python
python word转pdf代码实例
Aug 16 Python
python 画出使用分类器得到的决策边界
Aug 21 Python
python使用 request 发送表单数据操作示例
Sep 25 Python
python 统计文件中的字符串数目示例
Dec 24 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
python处理json数据文件
Apr 11 Python
Python Selenium 设置元素等待的三种方式
Mar 18 #Python
Python多线程threading join和守护线程setDeamon原理详解
Mar 18 #Python
Python semaphore evevt生产者消费者模型原理解析
Mar 18 #Python
Python中remove漏删和索引越界问题的解决
Mar 18 #Python
Python集成开发工具Pycharm的安装和使用详解
Mar 18 #Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
Mar 18 #Python
PyTorch加载自己的数据集实例详解
Mar 18 #Python
You might like
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
php如何获取文件的扩展名
2015/10/28 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
详解Angular 4 表单快速入门
2017/06/05 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
ES6新增的math,Number方法
2017/08/06 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
Angular实现的简单定时器功能示例
2017/12/28 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
微信小程序生成分享海报方法(附带二维码生成)
2019/03/29 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
[01:27:43]VGJ.S vs TNC Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
python脚本监控docker容器
2016/04/27 Python
Python的re模块正则表达式操作
2016/05/25 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
简单了解django orm中介模型
2019/07/30 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
Python里面如何拷贝一个对象
2014/02/17 面试题
乡镇办公室工作决心书
2014/03/11 职场文书
员工2014年度工作总结
2014/12/09 职场文书
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android