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字典键值对的添加和遍历方法
Sep 11 Python
Python开发的实用计算器完整实例
May 10 Python
Python字符串格式化的方法(两种)
Sep 19 Python
Python基础练习之用户登录实现代码分享
Nov 08 Python
在Python中pandas.DataFrame重置索引名称的实例
Nov 06 Python
python 定时器,轮询定时器的实例
Feb 20 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
Aug 27 Python
python3 webp转gif格式的实现示例
Dec 10 Python
Python实现中值滤波去噪方式
Dec 18 Python
Python 实现自动完成A4标签排版打印功能
Apr 09 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
May 11 Python
Python3与fastdfs分布式文件系统如何实现交互
Jun 23 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
漂亮但不安全的CTB
2006/10/09 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
json 入门基础教程 推荐
2009/10/31 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
使用Python脚本在Linux下实现部分Bash Shell的教程
2015/04/17 Python
如何在Python中编写并发程序
2016/02/27 Python
python xml解析实例详解
2016/11/14 Python
tensorflow 获取变量&打印权值的实例讲解
2018/06/14 Python
Python range、enumerate和zip函数用法详解
2019/09/11 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
浅谈matplotlib中FigureCanvasXAgg的用法
2020/06/16 Python
Python如何重新加载模块
2020/07/29 Python
联想英国官网:Lenovo英国
2019/07/17 全球购物
意大利奢侈品牌在线精品店:Jole.it
2020/11/23 全球购物
AJAX都有哪些有点和缺点
2012/11/03 面试题
就业自荐信
2013/12/04 职场文书
列车长先进事迹材料
2014/01/25 职场文书
工程负责人任命书
2014/06/06 职场文书
机电一体化专业求职信
2014/07/22 职场文书
入党转正申请报告
2015/05/15 职场文书
生产车间管理制度
2015/08/04 职场文书