selenium grid 是一种执行测试用例时使用的包含不同平台(windows、Linux、Android)的框架,并且这些平台是由一个中心点控制,这个中心点称之为HUB,而那些不同的平台称之为NODE
Server A 注册hub
java -jar selenium-server.jar -role hub
其默认监听端口4444,默认IP localhost 如果要修改,只需要加-port 参数和-Hubhost
http://localhost:4444/grid/console 查看注册节点
Server B 注册节点
java -jar selenium-server.jar -role node -port 6666 -hub http://hub集线器的ip:4444/grid
具体案例:
打开cmd,进入到你的selenium-server.jar目录下
cd /d E:\20200719-WEB自动化实战\环境搭建
java -jar selenium-server-standalone-3.141.59.jar -role hub
重新打开一个cmd窗口,执行
cd /d E:\20200719-WEB自动化实战\环境搭建
java -jar selenium-server-standalone-3.141.59.jar -role node -port 6666 -hub http://127.0.0.1:4444/grid
上图可见已注册成功,打开http://127.0.0.1:4444/grid可看到如下页面
http://localhost:4444/grid/console 查看注册节点
远程执行核心代码:
//只匹配linux下的firefox的版本为22的浏览器执行用例
DesiredCapabilities aDesiredcap = DesiredCapabilities("firefox", "22", Platform.LINUX);
WebDriver dr = new RemoteWebDriver(aDesiredcap);具体案例如下:
// driver= new FirefoxDriver();
//driver = new RemoteWebDriver(new URL("http://169.254.109.24:4444/wd/hub"),DesiredCapabilities.chrome());
RemoteWebDriver 在实际工作中的应用,在实际执行用例时,并不是在你编写自动化测试脚本的机器上执行测试用例,都时远程的,例如:
server A ie 11 win7\chrome\firefox
server B ie 9 win10\chrome\firefox
远程执行的时候,需要把各个浏览器的driver 放到运行代码的机器的环境变量中
如果远程的机器比较少,也可以直接在远程的机器上启动selenium-server.jar,不必注册Hub,本机上通过RemoteWebDriver的方式执行,具体操作和代码如下:
package com.my.remotewebdriver;
import static org.junit.Assert.fail;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
public class RemoteWebdriverDemo {
private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
// driver= new FirefoxDriver();
driver = new RemoteWebDriver(new URL("http://169.254.109.24:4444/wd/hub"), DesiredCapabilities.chrome());
}
@Test
public void testWorktileDemo() throws Exception {
driver.get("https://www.baidu.com");
driver.manage().window().maximize();
Thread.sleep(3000);
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
}
运行结果: