📅  最后修改于: 2023-12-03 14:52:05.921000             🧑  作者: Mango
Selenium Grid 是一款扩展 Selenium RC 的工具,它允许我们在分布式环境下运行测试。通俗点说,就是让一台机器上的浏览器操作对另外一台机器上的浏览器产生影响。而 Selenium Grid 正是通过将测试脚本和浏览器实例分离,然后允许测试脚本连接多个浏览器实例,实现了这一功能。
在使用 Selenium Grid 之前,必须要先安装 Java 环境。下载 Java 并安装后,可以使用以下命令执行 Java 版本查询:
java -version
如果 Java 环境已经安装,则会显示 Java 版本号。
进入 Selenium Grid 的官网下载页面(https://www.selenium.dev/downloads/)下载最新的版本,解压后即可使用。
首先需要启动 Grid 服务器。打开命令行窗口,进入 Selenium Grid 服务器目录,并使用以下命令启动 Grid 服务器:
java -jar selenium-server-standalone-version.jar -role hub
其中,version为当前下载的 Selenium Grid 版本号。
启动成功后,控制台会输出如下信息:
09:02:49.749 INFO [GridLauncherV3.parse] - Selenium server version: 3.141.59, revision: e82be7d358
09:02:49.912 INFO [GridLauncherV3.lambda$buildLaunchers$3] - Launching Selenium Grid hub on port 4444
09:02:50.104:INFO::main: Logging initialized @703ms to org.seleniumhq.jetty9.util.log.StdErrLog
09:02:50.500 INFO [Hub.start] - Selenium Grid hub is up and running
09:02:50.500 INFO [Hub.start] - Nodes should register to http://172.20.200.42:4444/grid/register/
09:02:50.502 INFO [Hub.start] - Clients should connect to http://172.20.200.42:4444/wd/hub
表示 Grid 服务器已经启动成功,可以在接下来的操作中使用它。
打开命令行窗口,进入 Selenium Grid 服务器目录下的“node”文件夹,并使用以下命令启动 Grid 节点:
java -jar selenium-server-standalone-version.jar -role node -hub http://localhost:4444/grid/register -port 60001 -browser browserName=chrome,maxInstances=5
其中,
启动成功后,控制台会输出如下信息:
10:09:23.102 INFO [GridLauncherV3.lambda$buildLaunchers$3] - Launching a Selenium Grid node on port 60001
10:09:24.029 INFO [WebDriverServlet.doStartServer] - Selenium Server is up and running on port 60001
10:09:24.040 INFO [SelfRegisteringRemote$1.run] - Starting auto registration thread. Will try to register every 5000 ms.
10:09:24.040 INFO [SelfRegisteringRemote.registerToHub] - Registering the node to the hub: http://localhost:4444/grid/register
10:09:24.081 INFO [SelfRegisteringRemote.registerToHub] - The node is registered to the hub and ready to use
表示 Grid 节点已经启动成功。
编写测试脚本,配置 Grid 服务器的地址和端口号即可使用。
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
# 配置 Grid 服务器地址、浏览器名称及版本
firefox_caps = DesiredCapabilities.FIREFOX
firefox_caps['platform'] = "WINDOWS"
firefox_caps['version'] = "latest"
# 连接 Grid 服务器
firefox_driver = webdriver.Remote(
command_executor='http://localhost:4444/wd/hub',
desired_capabilities=firefox_caps)
# 打开网页
firefox_driver.get("http://www.baidu.com")
# 展示页面标题
print(firefox_driver.title)
# 关闭浏览器
firefox_driver.quit()
通过命令行方式运行测试脚本:
python test.py
可以在 Grid 服务器的控制台中查看测试结果。具体方法为:
通过前面的介绍可以看到,使用 Selenium Grid 非常简单。只需要安装 Java 环境,下载并启动 Grid 服务器和节点,配置测试脚本中的 Grid 服务器地址和端口号,即可快速实现多机或分布式测试。