从零开始的自动化测试

Selenium 环境

Selenium是一个通过控制浏览器,实现基于浏览器的网页自动化测试框架,支持Python、Java等语言操作脚本。

浏览器驱动程序 webdriver

为了控制浏览器,你需要为不同类型的浏览器安装对应的驱动程序(webdriver

或者在这个镜像下载你的chrome对应版本chromedriver。

下载后把chromedriver放入环境变量PATH中。

mac chromedriver

1
2
3
mv chromedriver /usr/local/bin
which chromedriver
chromedriver

最新版的mac可能会出现打不开的情况,这时候你在finder找到chromedriver这个文件,点击出现菜单,按着command键点击菜单第一项”打开”。然后弹出来的确认一路点是,只要能这样打开一次,之后就都能打开了

之后正常打开应该显示:

1
2
3
4
Starting ChromeDriver 92.0.4515.43 (8c61b7e2989f2990d42f859cac71319137787cce-refs/branch-heads/4515@{#306}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.

Selenium Docker环境

⚠️ 这个docker里面的chrome不支持apple m1环境

使用docker的优势是不需要自己下载webdriver和更新webdriver对应版本。

推荐在企业级CI/CD中使用docker selenium,方便环境隔离和启动。

1
docker run -d -p 4444:4444 -p 7900:7900 --shm-size="2g" --env VNC_NO_PASSWORD=1 selenium/standalone-chrome:latest

默认并发session只有1个,以下命令支持五个并发

1
docker run -d -p 4444:4444 -p 7900:7900 --shm-size="2g" --env VNC_NO_PASSWORD=1 --env SE_NODE_MAX_SESSIONS=5 --env SE_NODE_OVERRIDE_MAX_SESSIONS=true selenium/standalone-chrome:latest

通过预定义的docker镜像,创建一个支持chrome浏览器的selenium测试环境。

本地暴露7900端口作为观看测试的页面

selenium docker grid

Python虚拟环境

创建虚拟环境

1
python3 -m venv webdriver

进入虚拟环境

1
source webdriver/bin/activate

安装依赖库

1
2
3
4
# selenium 依赖库
pip install selenium
# pytest 测试框架
pip install pytest

退出虚拟环境

1
source webdriver/bin/deactivate

从零开始

本地浏览器打开百度

1
2
3
4
5
6
7
from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(
options=chrome_options
)
driver.get("https://www.baidu.com/")

远程浏览器(docker等)打开百度

如果端口是4444的话

1
2
3
4
5
6
7
8
from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
driver = webdriver.Remote(
command_executor='http://localhost:4444',
options=chrome_options
)
driver.get("https://www.baidu.com/")