Selenium | 你真的知道怎么提高Selenium的运行速度吗?

前言

对于网上流传的提高selenium的方法有很多,但从程序运行的感官上来看,感觉提速并不明显。所以,我特地做了一些测试,寻找最优方案。
但是,由于对不同组的测试次数并不相同,结果可能不太严谨。但是,一般来说,结果基本都在一定范围内浮动,所以结果和多次测试大差不差。

0. 测速结果

请添加图片描述


1. Request发起请求

import time
import requests
t1 = time.time()
resp = requests.get('http://androil.sinaapp.com/modelyh/21177.html')
t2 = time.time()
print(f"一共耗时{t2-t1}")

测试结果:

一共耗时0.8379917144775391
一共耗时0.8982553482055664
一共耗时0.8139898777008057

2. Selenium发起请求(没有添加任何配置)

import time
from selenium.webdriver import Edge
web = Edge()创建浏览器
t1 = time.time()
web.get("http://www.baidu.com")
t2 = time.time()
print(f"一共耗时{t2-t1}")
web.quit()

测试结果

一共耗时2.5213799476623535
一共耗时2.655221462249756
一共耗时3.2438957691192627
一共耗时2.867304801940918

3. Selenium发起请求(禁用js、css、图片加载,启用无头浏览器,禁用gpu,禁用插件)

import time
from selenium.webdriver import Edge
from selenium.webdriver.edge.options import Options
edge_option = Options()
prefs = {
    'profile.default_content_setting_values': {
        'images': 2,   无图模式
        'javascript': 2,   禁止脚本加载
        'permissions.default.stylesheet': 2,   禁用css
    }
}
edge_option.add_experimental_option('prefs', prefs)   添加配置
edge_option.add_argument('--headless')   无头浏览器
edge_option.add_argument('--disable-plugins')   禁用插件
edge_option.add_argument("--disable--gpu")禁用显卡
web = Edge(options=edge_option)创建浏览器
t1 = time.time()
web.get("http://www.baidu.com")
t2 = time.time()
print(f"一共耗时{t2-t1}")
web.quit()

测试结果:

  一共耗时2.646573781967163
  一共耗时3.0973236560821533
  一共耗时1.9942853450775146
  一共耗时4.202911376953125

**猜想:**效果不明显,可能是浏览器打开的速度太慢了,直接使用已经打开的浏览器


4. Selenium发起请求(在已打开的浏览器上发起请求)

import time
from selenium.webdriver import Edge
from selenium.webdriver.edge.options import Options
edge_option = Options()
edge_option.add_experimental_option("debuggerAddress","127.0.0.1:9222")
web = Edge(options=edge_option)创建浏览器
t1 = time.time()
web.get("http://www.baidu.com")
t2 = time.time()
print(f"一共耗时{t2-t1}")
web.quit()

测试结果:

一共耗时0.9570584297180176
一共耗时0.8212602138519287
一共耗时0.6052114963531494
一共耗时0.6656308174133301
一共耗时0.8359296321868896

这里的加载速度明显快了很多


5. Selenium发起请求(在已打开的浏览器上发起请求,添加以上配置)

import time
from selenium.webdriver import Edge
from selenium.webdriver.edge.options import Options
edge_option = Options()
edge_option.add_argument('--blink-settings=imagesEnabled=false')
edge_option.add_argument('--headless')   无头浏览器
edge_option.add_argument('–-disable-javascript')   禁用javascript
edge_option.add_argument('--disable-plugins')   禁用插件
edge_option.add_argument("--disable--gpu")禁用显卡
edge_option.add_argument("--disable-images")禁用图像
edge_option.add_experimental_option("debuggerAddress","127.0.0.1:9222")
web = Edge(options=edge_option)创建浏览器
t1 = time.time()
web.get("http://androil.sinaapp.com/modelyh/21177.html")
t2 = time.time()
print(f"一共耗时{t2-t1}")
web.quit()

测试结果:

一共耗时0.602916955947876
一共耗时0.6741578578948975
一共耗时0.7092258930206299
一共耗时0.6321258544921875
一共耗时0.682152509689331

加载速度快了一点,但是但是但是,在运行启动浏览器的时候,可以明显感觉到耗费的时间不只是零点几秒。
**问题:**在计算时间的时候,我并没有把创建对象的时间加进去


6. Selenium启动(无配置)[浏览器对象创建耗时测试]

import time
from selenium.webdriver import Edge
t1 = time.time()
web = Edge()创建浏览器
web.get("http://www.baidu.com")
t2 = time.time()
print(f"一共耗时{t2-t1}")
web.quit()

测试结果:

一共耗时4.975956678390503
一共耗时5.392338275909424
一共耗时5.371351480484009
一共耗时5.267101287841797
一共耗时4.5134382247924805
一共耗时5.200875520706177
一共耗时4.3331522941589355
一共耗时4.416335582733154

总的来说,对于创建浏览器对象所耗费的时间,我们是无法缩短的。所以,在一个进程中,我们尽量只创建一个浏览器对象


6.1 Selenium启动(无配置)[浏览器对象创建耗时测试][二次请求]

import time
from selenium.webdriver import Edge
from selenium.webdriver.edge.options import Options
edge_option = Options()
edge_option.add_experimental_option("debuggerAddress","127.0.0.1:9222")
web = Edge(options=edge_option)创建浏览器
web.get("https://www.sougou.com/")
t1 = time.time()
web.get('https://www.baidu.com/')
t2 = time.time()
print(f"二次请求一共耗时{t2-t1}")
web.quit()

测试结果:

二次请求一共耗时0.6411991119384766
二次请求一共耗时0.5332534313201904
二次请求一共耗时0.5351331233978271
二次请求一共耗时0.6386752128601074

7. Selenium启动已经打开的浏览器(无配置)[浏览器对象创建耗时测试]

import time
from selenium.webdriver import Edge
from selenium.webdriver.edge.options import Options
edge_option = Options()
edge_option.add_experimental_option("debuggerAddress","127.0.0.1:9222")
t1 = time.time()
web = Edge(options=edge_option)创建浏览器
web.get("http://androil.sinaapp.com/modelyh/21177.html")
t2 = time.time()
print(f"一共耗时{t2-t1}")
web.quit()

测试结果:

  一共耗时3.3087267875671387
  一共耗时3.16994047164917
  一共耗时3.21472430229187
  一共耗时3.1717209815979004
  一共耗时3.227937698364258

速度有所提升,但还不够快

这里需要知道的是,由于浏览器已经打开,我们是无法给已启动的浏览器添加配置的,所有需要我们去手动配置。

不信看下面


8. Selenium启动(有配置,但是在代码中)[浏览器对象创建耗时测试]

import time
from selenium.webdriver import Edge
from selenium.webdriver.edge.options import Options
edge_option = Options()
 edge_option.add_argument('--blink-settings=imagesEnabled=false')
 edge_option.add_argument('--headless')   无头浏览器
 edge_option.add_argument('–-disable-javascript')   禁用javascript
 edge_option.add_argument('--disable-plugins')   禁用插件
 edge_option.add_argument("--disable--gpu")禁用显卡
 edge_option.add_argument("--disable-images")禁用图像
edge_option.add_experimental_option("debuggerAddress","127.0.0.1:9222")
t1 = time.time()
web = Edge(options=edge_option)创建浏览器
web.get("https://www.baidu.com/")
t2 = time.time()
print(f"一共耗时{t2-t1}")
web.quit()

测试结果:

  一共耗时3.41314959526062
  一共耗时3.263237714767456
  一共耗时3.3738415241241455
  一共耗时3.182044267654419
  一共耗时3.2655630111694336

9. Selenium启动已打开的浏览器(在浏览器中配置)

测试结果:

  一共耗时3.175990343093872
  一共耗时3.1182053089141846
  一共耗时3.0257885456085205
  一共耗时3.1209449768066406

结论

  • 使用已经打开的浏览器
  • 对浏览器进行配置
  • 只创建一个浏览器对象
新版的Selenium运行速度取决于多个因素。首先,影响速度的因素包括网速、页面加载、操作步骤、等待时间、算法的复杂度、数据提取与写入速度等。这些因素都可能对Selenium运行速度产生影响。另外,我们也可以通过一些方法来提升Selenium运行速度。比如减少操作,直接进入需要操作的页面,中断页面加载,采用松耦合编写测试用例并设置多线程运行,少用sleep()等待方法等。这些方法都可以在不影响测试用例的前提下提升Selenium运行速度。同时,在使用Selenium时,也可以优化Python代码来提高速度。总的来说,新版Selenium运行速度可以通过上述方法进行提升。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [如何提高selenium脚本执行速度](https://blog.csdn.net/weixin_37791679/article/details/116930171)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [基于Python3.3+Selenium3.0框架实战Web自动化测试实战(百度网站实测项目)](https://download.csdn.net/download/pangshui333333/88275005)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值