| 点击下方图片有惊喜,精美礼品等你来拿哦 |
|---|
前言:
✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 哈士奇 ,一位致力于 TFS 赋能的博主 ✌
CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主
如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步
人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。
如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦
专栏系列(点击解锁) 学习路线指引 知识定位 Python全栈白皮书 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。 语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。 自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。 自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。 数据库开发实战篇 更新中 爬虫入门与实战 更新中 数据分析篇 更新中 前端入门+flask 全栈篇 更新中 django+vue全栈篇 更新中 拓展-人工智能入门 更新中 网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者 网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。 vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。 shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结] WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈 渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈 点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器 测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得! 测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。 RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。 Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。 MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。
文章目录
- python-selenium 环境配置搭建
- 安装 Selenium
- 运行第一个 selenium 脚本
- 安装浏览器驱动 Driver
- 通过脚本启动Chrome浏览器
- python-selenium 小拓展
- 拓展1 - 偷懒的方式不用指定 driver 路径即可启动 driver
- 拓展2 - 究竟该如何关闭 driver 启动的浏览器
工欲善其事必先利其器,所以呢,在我们真正通过 Selenium 开始编写自动化测试脚本之前,先要进行基本的环境设置和环境的搭建。
python-selenium 环境配置搭建 安装 Selenium安装 selenium 有两种方式可以实现
运行第一个 selenium 脚本
第一种:通过 pip 命令行方式安装
- 在终端或者 Pycharm 的 Terminal 终端输入 pip install selenium 即可
-也可以通过 pip install -U selenium 安装最新版本的 selenium ,该命令最常用的场景是本地已有旧版本的 selenium,尽行覆盖安装
- ps:讲道理,没有使用 煮 的情况下安装的是真慢....
如下图:
- 第二种:也可以通过设置中心来进行安装,见下图:
ps:windows 系统的设置中心为 "Setting..." 。
代码示例如下:(这个脚本是会报错的,虽然 selenium 安装成功了,但是我们还缺少启动浏览器的驱动)
# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://csdn.com")
运行结果如下:
虽然没有正常的打开浏览器,但是至少证明了两个问题。
第一个问题,selenium 的环境是OK的。
第二个问题,selenium 现在还无法正常的打开浏览器。
所以接下来我们就看一下如何解决无法正常启动浏览器这个问题。
安装浏览器驱动 Driver上图中演示的 selenium 脚本之所以没有成功启动 浏览器的直接原因就是我们还没有安装相对应的浏览器的 driver ,不同浏览器有不同的 driver。
如下所示:
谷歌浏览器 Chrome 的 ChromeDriver:
下载地址:http://npm.taobao.org/mirrors/chromedriver/
注意:ChromeDriver在下载的时候,需要与浏览器的版本一致。
火狐浏览器 Firefox 的 Geckodriver:
下载地址:http://npm.taobao.org/mirrors/geckodriver/
注意:Geckodriver 在下载的时候,一般下载最新版本的即可。
IE浏览器的 IEdriver:
下载地址:http://selenium-release.storage.googleapis.com/index.html
注意:IEdriver 比较特殊,它下载的版本需要跟 selenium 版本一致才可以正常运行。
注意:下载浏览器的 driver 之前需要查看当前浏览器的版本,然后再下载对应版本的 driver ,如果下载的 driver 与浏览器版本不匹配的话,是无法正常启动浏览器的。
谷歌浏览器查看版本的命令是在网址输入框内输入 chrome://version/ ,即可查看当前浏览器的版本了。如下图:
从图中可以看到当前 Chrome 浏览器的版本是 101.0.4951.54 版本,访问上文中的 ChromeDriver 的下载地址,找到对应的版本号,直接下载放到想要存储 driver 的路径即可。
通过脚本启动Chrome浏览器
代码示例如下:
# coding:utf-8
import time
from selenium import webdriver
chrome_driver = "/Users/workspace/driver/chromedriver"
driver = webdriver.Chrome(executable_path=chrome_driver)
driver.get("https://blog.csdn.net/")
time.sleep(3)
driver.close()
这里可能会出现 “无法打开 ‘chromedriver’,因为无法验证开发者。” 的提示信息,解决方法如下:
第一步:通过终端进入到 chromedriver 所在的路径
第二步:执行 xattr -d com.apple.quarantine chromedriver 即可;geckodriver 如果遇到该问题也是同样的解决方案。
代码运行结果如下:
从动图中可以看到,Chrome 正在受到自动测试软件的控制。并且当我们运行启动 driver 去打开浏览访问 https://blog.csdn.net/ 的时候,是可以正常打开并关闭的。由此,我们的python-selenium 环境配置搭建才算是完成。
在看看火狐浏览器是否可以正常的受 selenium 的控制…
代码示例如下:
# coding:utf-8
import time
from selenium import webdriver
# chrome_driver = "/Users/workspace/driver/chromedriver"
gecko_drtver = "/Users/workspace/driver/geckodriver"
driver = webdriver.Firefox(executable_path=gecko_drtver)
driver.get("https://www.baidu.com/")
time.sleep(2)
driver.close()
运行结果如下:
这个启动成功的截图是我从网上找的,因为我的 Firefox 一不小心更新到了最新版本,而我下载的最新版的 geckodriver 仍然报错 不兼容的问题 看来火狐浏览器的驱动还没有更新到最新版本的浏览器。(不过我在 Windows 电脑上尝试是成功的,看来 mac 的 geckodriver 确实更新的比 Win 系统的慢...)
python-selenium 小拓展
在上文中的脚本中,我们是通过指定浏览器的 driver 路径的方式来启动 driver 从而打开浏览器,那么有没有什么办法可以让我们不用每次都指定路径就可以启动 driver 呢?答案当时是有的
拓展1 - 偷懒的方式不用指定 driver 路径即可启动 driver 拓展2 - 究竟该如何关闭 driver 启动的浏览器
- 第一个方法就是将 driver 所在的路径,添加至环境变量,这样就可以不通过指定路径文件的方式了。
- 第二个方法就比较偷懒了,但是我喜欢,那就是将 driver 文件直接放到 python 的路径下即可,这样其实也是利用变量的一种方式。终端输入 where python3 即可知道,然后将 driver 文件直接放到其路径下即可。
在 selenium 中,提供了两种关闭 driver 启动的浏览器的方式:
- close() 方法:该方法可以关闭浏览器,但是它关闭的只是浏览器的窗口,由 driver 启动的浏览器的进程依然还在,会占用一定的资源。
- quit() 方法:该方法同样可以关闭浏览器,但是它在关闭浏览器的窗口的同时,也会 kill 掉 driver 启动的浏览器的进程。
ps:以上两种方法,close() 方法适合在我们启动浏览器结束了一个用例的场景之后,仍需执行其他的自动化测试用例的时候使用;而 quit() 方法则适合在已经执行完所有用例之后使用。



