什么是Selenium Grid
Selenium Grid 是Selenium的三大组件之一
Selenium Grid 允许用户同时在不同的机器和系统上测试不同的浏览器
Selenium Grid的组成
*hub节点
中心节点,或者总控节点
管理各个node节点的注册信息和状态信息
接受并转发客户端(测试脚本)请求到合适的node节点
*node节点
子节点,或代理节点
负责注册配置信息到hub节点(平台、浏览器、浏览器版本等等)
负责接收来自hub节点的转发的请求以执行具体的用例
也可单独作为远程节点执行测试用例
环境准备
*测试机器安装JDK,配置环境变量
*下载selenium-server-standalone-x.x.x.jar
https://npm.taobao.org/mirrors/selenium
配置运行
1、启动hub
`java -jar selenium-server-standalone-3.5.1.jar -role hub -port 8888 -maxSession 10`
参数解释:
java -jar selenium-server-standalone-3.5.1.jar 运行jar包
-role hub 以hub的角色运行
-port 8888 指定hub运行的端口(默认4444)
-maxSession 10 最大的处理会话
为了方便执行,可以达成bat脚本再执行
2、查看hub的运行状态
浏览器中输⼊http://localhost:8888/grid/console
3、启动node
以chrome的配置为例
`java -Dwebdriver.chrome.driver="chromedriver.exe" -jar selenium-server-standalone-3.5.1.jar -role node -hub "http://192.168.4.4:8888/grid/register" -port 5558 -browser "browserName=chrome,maxInstances=2,version=68,platform=WINDOWS"`
参数解释:
java -Dwebdriver.chrome.driver="chromedriver.exe " 指定chromeDriver驱动所在的路径(本地)
-jar selenium-server-standalone-3.5.1.jar 运行的jar包
-role node 以node角色运行
-hub “http://192.168.4.4:8888/grid/register” 指定连接的url地址,这样node才能和hub通讯上
-port 5558 node的执行端口
-browser “browserName=chrome,maxInstances=2,version=68,platform=WINDOWS”
运行的浏览器名称,最多支持2个浏览器示例,浏览器版本,平台名称
转换成bat脚本
`set command=java`
`set chromeDriver=-Dwebdriver.chrome.driver="chromedriver.exe"`
`set jarParams=-jar selenium-server-standalone-3.5.1.jar`
`set type=-role node`
`set hub=-hub "http://192.168.70.1:8888/grid/register"`
`set port=-port 5558`
`set chrome=-browser "browserName=chrome,maxInstances=2,version=68,platform=WINDOWS"`
`%command% %chromeDriver% %jarParams% %type% %hub% %port% %chrome%`
测试代码
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.BrowserType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
public class tester {
public static void main(String[] args) throws MalformedURLException, InterruptedException {
//期望能力对象
DesiredCapabilities capabilities=new DesiredCapabilities();
//配置测试的浏览器
capabilities.setBrowserName(BrowserType.CHROME);
capabilities.setPlatform(Platform.WINDOWS);
//hub节点
String url="http://192.168.70.1:8888/wd/hub";
WebDriver driver=new RemoteWebDriver(new URL(url),capabilities);
driver.get("http://www.baidu.com");
driver.findElement(By.id("kw")).sendKeys("刘秋秀");
Thread.sleep(3000);
}
}