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 相关文章推荐
flask中使用SQLAlchemy进行辅助开发的代码
Feb 10 Python
python如何查看系统网络流量的信息
Sep 12 Python
TensorFlow Session使用的两种方法小结
Jul 30 Python
Python sorted函数详解(高级篇)
Sep 18 Python
Django中的ajax请求
Oct 19 Python
python利用pandas将excel文件转换为txt文件的方法
Oct 23 Python
django小技巧之html模板中调用对象属性或对象的方法
Nov 30 Python
python实现自动解数独小程序
Jan 21 Python
python filecmp.dircmp实现递归比对两个目录的方法
May 22 Python
解析Tensorflow之MNIST的使用
Jun 30 Python
python3列表删除大量重复元素remove()方法的问题详解
Jan 04 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
Mar 01 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
php 多个submit提交表单 处理方法
2009/07/07 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
为什么要使用Vuex的介绍
2019/01/19 Javascript
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
python 计算文件的md5值实例
2017/01/13 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
5个HTML5的常用本地存储方式详解与介绍
2021/03/27 HTML / CSS
机电专业毕业生求职信
2013/10/27 职场文书
高中生期末评语
2014/01/28 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
四年大学自我鉴定
2014/02/17 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
电视购物广告词
2014/03/19 职场文书
初中生期末评语大全
2014/04/24 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
js前端图片加载异常兜底方案
2022/06/21 Javascript