当前位置: 首页 > news >正文

Chromedriver放项目里就行!Selenium 3 和 4 指定路径方法对比 + 兼容写法

我们在做自动化测试的时候经常会遇到的一个问题:浏览器驱动chromedriver应该放在哪里

小编在上篇文章中,给大家推荐过不同电脑设置chromedriver最佳路径

Python自动化测试入门必备:ChromeDriver是个啥?咋下载配置?

 

但有小伙伴后台私信问:可以把chromedriver放在项目中,然后在代码中写死指定路径吗

这样做的目的是将chromedriver和代码一起打包,之后拷贝到任意一台电脑上,都无需再次重新配置chromedriver路径

非常nice的需求,小编以前咋没想到过呢?接下来就是chromedriver指定路径的代码实现,但需要注意在Selenium3和Selenium4的写法是有区别的,小伙伴们一定要查看好自己的Selenium版本再进行编写,或者小编最后也会给大家提供了一个兼容Selenium3和4两种版本的代码实现方法

话不多说,我们直接上代码!

  

Selenium 3

此方法仅适用于Selenium3

实现方法:首先将chromedriver路径传递给executable_path变量,之后在webdriver.Chrome()中传入executable_path参数即可

from selenium import webdriver
​
class GetDriver:driver = None
​def get_driver(self, url):# 使用指定chromedriver路径driver_path="/Users/youth/Downloads/code/chromedriver"self.driver = webdriver.Chrome(executable_path=driver_path)
​# 打开urlself.driver.get(url)# 返回driverreturn self.driver

  

Selenium 4

此方法同样适用于Selenium3和Selenium4

注意:上方导包也新增了Service类的导入

实现方法:首先将chromedriver实际路径传递给Service类,之后在webdriver.Chrome()中传入service参数

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
​
class GetDriver:driver = None
​def get_driver(self, url):# 指定chromedriver路径driver_path="/Users/youth/Downloads/code/chromedriver"# 使用Service对象service = Service(executable_path=driver_path)self.driver = webdriver.Chrome(service=service)# 打开url为self.driver.get(url)# 返回driverreturn self.driver

  

对比

版本Selenium 3Selenium 4
指定路径方式webdriver.Chrome(executable_path='path')webdriver.Chrome(service=Service('path'))
Service对象可选使用推荐使用
executable_path参数直接支持已弃用,需通过Service对象
代码简洁性较简洁稍显冗长但更规范

  

兼容性写法

如果想让代码兼容Selenium 3和4两个版本,可以这样写:

from selenium import webdriver
from tools.get_log import GetLog
​
log = GetLog.get_logger()
​
class GetDriver:driver = Nonedef get_driver(self, url, driver_path=None):log.info("判断是否为空")if self.driver is None:log.info("为空,启动浏览器驱动")try:# 尝试Selenium 4的写法from selenium.webdriver.chrome.service import Serviceif driver_path:log.info(f"使用Selenium 4方式指定chromedriver路径: {driver_path}")service = Service(executable_path=driver_path)self.driver = webdriver.Chrome(service=service)else:log.info("使用系统PATH中的chromedriver")self.driver = webdriver.Chrome()except ImportError:# 回退到Selenium 3的写法if driver_path:log.info(f"使用Selenium 3方式指定chromedriver路径: {driver_path}")self.driver = webdriver.Chrome(executable_path=driver_path)else:log.info("使用系统PATH中的chromedriver")self.driver = webdriver.Chrome()log.info("最大化")self.driver.maximize_window()log.info(f"打开url为: {url}")self.driver.get(url)log.info("返回driver")return self.driver
​def quit_driver(self):log.info("判断是否为空")if self.driver:log.info("不为空,关闭driver")self.driver.quit()log.info("置空数据")self.driver = None

 

既然Selenium官方修改了指定路径的写法,那么小编还是推荐使用Selenium 4 的方法,毕竟它版本更新且有更好的维护,只是相比Selenium3版本麻烦一些。当然最保险的做法就是直接使用兼容版本代码,可以完美的兼容Selenium3和4两个版本(但会造成代码的复杂和冗余)

  

好啦!如果你觉得这篇文章对你有帮助,请给我点个赞吧!关于配置chromedriver以及selenium的一些其他问题也可以评论、私信问我,感谢大家的观看!

http://www.dtcms.com/a/495288.html

相关文章:

  • Spring Boot 项目, idea 控制台日志设置彩色
  • wap网站建设好不好百度小程序官方收费标准
  • Go语言数据竞争Data Race 问题怎么检测?怎么解决?
  • 作为项目经理,如何做好项目复盘?
  • 网站建设百度不通过杭州建站模板系统
  • A函数里调用B函数 ,且往B函数里传了个二级指针,并在B返回后,释放该指针
  • 茶社网站开发与设计的开题报告自适应网站好建们
  • 做拍福利爱福利视频网站网站建设与维护实训
  • LangGraph学习笔记(一):langgraph安装
  • DFS算法原理及其模板
  • 【小程序】微信小程序点击效果(view、button、navigator)
  • 快速上手 Scrapy:5 分钟创建一个可扩展的爬虫项目
  • 青岛网站设计公司在哪找网店代运营什么意思
  • 数字图像处理-图像增强(2)
  • JPA 用 List 入参在 @Query中报错 unexpected AST node: {vector}
  • 国外网站顶部菜单设计电子商务 网站设计
  • 南城县建设局网站北京vi设计公司哪
  • spark性能优化1:通过依赖关系重组优化Spark性能:宽窄依赖集中处理实践
  • 工程师的烹饪 - 空气炸锅菜谱
  • 如何在腾讯云上建设网站手机必备网站
  • Linux:12.线程同步与互斥
  • 泰安网站建设哪家强wordpress m1
  • el-table中控制单列内容多行超出省略及tooltip
  • 构建企业级跨境电商(Temu)财务数据自动化采集系统
  • B-tree索引像字典查词一样工作?那哪些数据库查询它能加速,哪些不能?
  • C++实现二叉树搜索树
  • 网站开发和美工的区别手机域名注册被骗
  • 做模特的网站python语言编程入门
  • GeeLark 9月功能更新回顾
  • C++---ref-qualifier( / )函数的左右值调用的界定