Selenium Web UI 自动化分布式运行:SeleniumGrid

简介:Selenium Grid是selenium的三大组件之一,它允许Selenium-RC针对规模庞大的测试案例集或者需要在不同环境中运行的测试案例集进行扩展。通过将客户端命令发送到远程浏览器的实例, Selenium Grid 允许在远程计算机 (虚拟或真实) 上执行WebDriver脚本. 它旨在提供一种在多台计算机上并行运行测试的简便方法。Selenium Grid允许我们在多台计算机上并行运行测试, 并集中管理不同的浏览器版本和浏览器配置 (而不是在每个独立的测试中)。 官方文档: https://www.selenium.dev/zh-cn/ selenium-grid文档: https://www.selenium.dev/zh-cn/documentation/grid/

selenium-grid优势:

1、为所有的测试提供统一的入口 2、管理和控制运行着浏览器的节点/环境 3、扩展 4、并行测试,减少执行时间 5、跨平台(操作系统)测试 6、负载测试

环境安装准备: 1、控制机和执行机,hub和node节点电脑互相能ping通。 2、执行机node节点需要配置对应浏览器驱动。 3、python:推荐3.7+,如3.8.0,验证Python环境安装结果 python 4、java环境:自行百度,验证Java环境安装结果 java -version 5、selenium-server下载地址 https://github.com/SeleniumHQ/selenium/releases/tag/selenium-3.141.59

启动hub: java -jar selenium-server-standalone-3.141.59.jar -role hub -port 4444

参数说明: 1、selenium-server-standalone.jar不在当前目录,需要添加路径。 2、-port 4444,hub默认4444端口 3、可以把启动命令写在.bat批处理里,方便执行

附:启动hub的bat的脚本

@echo off :: 进入对应盘符和selenium-server在的路径 C: cd C:magicwebUI java -jar selenium-server-standalone-3.141.59.jar -role hub -port 4444 pause

node节点启动: java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555 -hub http://hub_ip:4444/grid/register

节点启动完成后,hub的状态:

检查selenium Hub的状态:

http://localhost:4444/grid/console

源码:

# coding=utf-8 from selenium import webdriver import os

chrome_driver = os.path.abspath(r"C:softwarechromedriver") os.environ["webdriver.chrome.driver"] = chrome_driver chrome_capabilities = { "browserName": "chrome", # 浏览器名称 "version": "", # 操作系统版本 "platform": "ANY", # 平台,这里可以是windows、linux、andriod等等 "javascriptEnabled": True, # 是否启用js "webdriver.chrome.driver": chrome_driver } driver = webdriver.Remote("http://node_ip:5555/wd/hub", desired_capabilities=chrome_capabilities) driver.get("http://www.baidu.com") print(driver.title) driver.quit()

控制机代码执行效果:

控制机selenium-grid状态:

node执行机启动浏览器并打开百度:

自此,Selenium分布式运行安装配置完毕。

经验分享 程序员 微信小程序 职场和发展