selenium grid 4.0 实现分布式自动化测试

一、什么是Selenium Grid?

Selenium Grid是Selenium的三大组件之一,允许用户同时在不同的机器和系统上测试不同浏览器。 也就是说Selenium Grid支持分布式的测试执行。它可以让你的测试用例在一个分布式的执行环境中运行。

由下图可见,测试脚本会通过selenium hub节点分发给不同的node节点,而不同的node节点所在的操作系统和搭载的浏览器类型可以是不同的。

image.png

hub节点

  • 中心节点,或总控节点
  • 管理各个node节点的注册信息和状态信息
  • 接收并转发客户端(测试脚本)请求到合适的node节点

node节点

  • 子节点,或代理节点
  • 负责注册配置信息到hub节点(平台、浏览器、浏览器版本等)
  • 负责接收来自hub节点的转发的请求以执行测试脚本
  • 也可单独作为远程节点执行测试脚本

二、环境准备

1. 下载selenium-server--.jar

下载地址:http://selenium-release.storage.googleapis.com/index.html

2. 下载chromedriver

下载地址:https://registry.npmmirror.com/binary.html?path=chromedriver/
配置path: sudo mv /path/to/chromedriver /usr/local/bin

3. 启动hub

java -jar selenium-server-4.5.0.jar hub --host 127.0.0.1 --publish-events tcp://127.0.0.1:4442 --subscribe-events tcp://127.0.0.1:4443 --port 4444
启动成功之后,浏览器打开:http://127.0.0.1:4444

image.png
image.png

4. 启动node

第一个node
java -jar selenium-server-4.5.0.jar node --host 127.0.0.1 --publish-events tcp://127.0.0.1:4442 --subscribe-events tcp://127.0.0.1:4443 --port 5555

第二个node
java -jar selenium-server-4.5.0.jar node --host 127.0.0.1 --publish-events tcp://127.0.0.1:4442 --subscribe-events tcp://127.0.0.1:4443 --port 6666 --driver-configuration display-name="Chrome" max-sessions=2 webdriver-path="/usr/local/bin/chromedriver" stereotype='{"browserName":"chrome", "browserVersion": "105.0.5195.52", "goog:chromeOptions":{"binary":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"}}' --detect-drivers false

image.png
image.png

三、代码配置

selenium代码

from selenium import webdriver

options = webdriver.ChromeOptions()
driver = webdriver.Remote(command_executor="http://127.0.0.1:4444", options=options)
driver.get("https://www.baidu.com")
print(driver.page_source)
driver.quit()

指定版本

from selenium import webdriver

options = webdriver.ChromeOptions()
options.set_capability("browserName", "chrome")
options.set_capability("browserVersion", "106.0")
driver = webdriver.Remote(command_executor="http://127.0.0.1:4444", options=options)
driver.get("https://www.baidu.com")
time.sleep(100)
print(driver.page_source)
driver.quit()
image.png

你可能感兴趣的:(selenium grid 4.0 实现分布式自动化测试)