首页 89游戏攻略 正文

chromedriver是什么?自动化测试必备神器!

大家老哥们姐们!今天咱们不聊别的,就聊聊我最近这几年摸爬滚打,在自动化测试里头发现的一个宝贝——chromedriver。说它是神器,一点都不夸张,真是咱们搞自动化测试的,离了它还真转不起来!

本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址:www.gm89.icu

想当年,我刚开始接触自动化测试那会儿,就是一头雾水。咱们做项目的,经常遇到那种,产品经理,领导,今天说功能改了,明天说UI变了,每次改动,咱们就得一遍一遍地去点,去看,去测。那叫一个头大,耗时耗力不说,还容易漏掉一些小细节。人嘛总有犯错的时候。于是我就琢磨,有没有什么办法,能让这些重复性的工作,让电脑自己去干?

那时候,就听说了Selenium。这东西听起来挺神的,说能模拟人工操作浏览器。我一听,眼睛都亮了,赶紧就跑去研究。我就照着网上的教程,学着用Python写了几行代码,想着让它帮我打开个网页啥的。结果,代码跑起来,电脑跟我说,报错了!“某某某,找不到!”我当时就懵了,这啥情况?明明代码写得都没问题,环境变量也配了,怎么就跑不起来?

后来我才搞明白,Selenium这东西,它自己是不能直接“驱动”浏览器去干活的。它就像个大老板,发号施令,但具体干活的,还得有个小弟。这个小弟,就是咱们今天要讲的这个chromedriver

那么,这chromedriver到底是啥玩意儿?

简单来说,它就像是咱们写的自动化测试脚本和Google Chrome浏览器之间的一个“翻译官”或者“桥梁”。你用Selenium写的Python代码,比如“点击这个按钮”、“输入那段文字”,这些指令Selenium是发出来了,但Chrome浏览器它不认识!这时候,chromedriver就站出来了,它把咱们脚本里的这些高级指令,翻译成Chrome能听懂的语言,然后指挥Chrome浏览器,一步一步地去执行这些操作。反过来,Chrome浏览器执行完操作,或者页面上有啥变化,chromedriver又能把它捕捉到,再“翻译”给我们脚本,这样咱们的脚本就能知道浏览器当前是个啥状态了。

我怎么搞到它,又怎么用起来的?

我记得我当时为了让我的第一个自动化脚本跑起来,真是折腾了好久。最关键的一步,就是搞定这个chromedriver。我的经验是这样的:

  • 第一步,确认你的Chrome版本。 这点特别重要!Chrome浏览器经常更新,每次更新,chromedriver也得跟着更新。它俩的版本号,最好要匹配上。你得先去你的Chrome浏览器里,找到“关于Chrome”,看看你的Chrome浏览器是哪个版本号。比如我当时用的是Chrome 96,那我就得去找对应的chromedriver 96版。
  • 第二步,去官方下载。 我一般都是直接去官网下载,图个安心。记住,千万别随便找个不知名的网站就下,万一有啥病毒就不好了。下回来就是一个压缩包,解压出来就一个文件,叫`*`(Windows系统下是这样)。
  • 第三步,把它放到合适的位置。 这步最开始也让我卡了很久。你可以选择把它放到你Python安装目录下的`Scripts`文件夹里(因为它那个目录一般都在系统PATH环境变量里,这样系统就能找到它),或者,你直接把它放到你自动化测试项目代码的根目录,然后写脚本的时候,把路径指给它。我通常是放在项目目录下,这样每个项目独立管理,不容易搞混。

具体怎么在代码里用?我当时是这样写的:


from selenium import webdriver

# 指定chromedriver的路径

driver_path = './*' # 假设chromedriver就在你的项目根目录

driver = *(executable_path=driver_path)

# 然后就可以让浏览器开始干活了

print(*)

# 干完活别忘了关闭浏览器

我第一次把这段代码跑起来,看到Chrome浏览器自己弹出来,自己打开了百度,然后又自己关掉,我当时那个激动,感觉像发现了新大陆一样!那一刻,我知道,我算是摸到了自动化测试的门了。

它给我带来了什么?为啥说它是神器?

有了chromedriver,我的自动化测试之路就顺畅多了。它让我的脚本能够真正地“控制”浏览器,去完成各种各样的任务:

  • 日常重复性测试解放双手: 比如我们每次发版前的回归测试,以前得好几个人瞪大眼睛去一个一个功能点,现在我直接写好脚本,让chromedriver带着Chrome浏览器自己跑一遍,大大节省了人力和时间。
  • 测试结果更稳定可靠: 人工操作再仔细,也难免有疏漏或者点错的时候。但脚本只要写对了,它每次执行都是一模一样的步骤,结果也更准确,更不容易出错。
  • 快速反馈: 比如开发改了个小功能,我几分钟就能跑完相关的自动化用例,立马知道改动有没有引入新的问题,开发也能更快地得到反馈,效率一下子就上来了。
  • 甚至可以做数据抓取: 偶尔有些需要从网站上批量获取数据的情况,chromedriver配合Selenium,也能帮我完成这些任务,简直是多面手!

我踩过的一些坑和学到的经验

这“神器”也不是那么一帆风顺就能用好的。我这些年也遇到过不少问题:

  • 版本不匹配是常态: Chrome浏览器一更新,我的脚本可能就跑不起来了。这时候我第一反应就是去检查chromedriver的版本是不是和Chrome匹配。大部分时候,更新一下chromedriver就能解决问题。
  • 路径问题很恼人: 刚开始老是忘了把chromedriver放到环境变量里,或者路径指错了,搞得程序找不到。后来我学乖了,要么老老实实放项目目录,要么就设置好全局路径。
  • 无头模式(Headless Mode): 有时候我们跑自动化测试,并不需要真的弹出一个浏览器窗口出来,特别是跑在服务器上的时候。这时候我就会设置Chrome的无头模式,让它在后台默默地跑,这样不仅节省资源,跑起来也更快。

chromedriver,它就像是自动化测试里的一个“幕后英雄”,默默地帮我们把脚本的指令传达给浏览器,再把浏览器的反馈带回来。没有它,咱们的Selenium脚本就是巧妇难为无米之炊,根本转不起来。如果你也是跟我一样,正在自动化测试的路上摸索,那这个chromedriver,绝对是你工具箱里,必不可少的一个宝贝,一个实打实的神器!