Selenium Grid远程控制并发
2019-01-08 本文已影响51人
测试老杨
扫码关注本人公众号
image.pngSelenium Grid介绍
Selenium Grid允许你在多台机器的多个浏览器上并行的进行测试,即分布式测试。
通常,以下两种情况会需要使用Selenium Grid:
1)通常多个浏览器的兼容性测试,即在不同浏览器或不同操作系统的浏览器中进行测试
2)测试用例较多时,可以通过分布式测试减少测试执行时间
思路
1)客户机(node)需要部署的软件包括:
JDK+selenium-server-standalone-3.9.1.jar
2)主机(hub)需要部署的软件:
JDK+selenium-server-standalone-3.9.1.jar+selenium-java+Maven+Eclipse+TestNG
3)在主机的命令行窗口里面启动hub(不要关闭命令行窗口,如要停止,使用快捷键
Ctrl+c)
java -jar selenium-server-standalone-3.9.1.jar -role hub
4)在客户机的命令行窗口里面启动node(不要关闭命令行窗口,如要停止,使用快捷键
Ctrl+c)
java -Dwebdriver.chrome.driver="D:\\chromedriver.exe" -Dwebdriver.ie.driver="D:\\MicrosoftWebDriver.exe" -Dwebdriver.gecko.driver="D:\\geckodriver.exe" -jar selenium-server-standalone-3.9.1.jar -role node -port 5555 -hub http://192.168.0.131:4444/grid/register
5)DesiredCapabilities可以理解为是一个配置工具,提供的函数:
internetExplorer()函数:获取浏览器管理工具(配置浏览器的参数)
setBrowserName(browser)函数:设置浏览器的名称(比如:internet explorer,chrome,firefox)
setPlatform()函数:设置浏览器的版本(比如:WIN版)
DesiredCapabilities capability = DesiredCapabilities.internetExplorer();
capability.setBrowserName(browser);
capability.setPlatform(Platform.WINDOWS);
6)RemoteWebDriver可以理解为是一个远程驱动工具(操作远程的浏览器)
WebDriver driver = new RemoteWebDriver(new URL(node), capability);
7)URL表示地址
new URL(url)构造函数:将String类型的地址转成URL类型的地址
在主机的命令行窗口里面启动hub
image.png在客户机的命令行窗口里面启动node
image.png设计Java脚本
完整代码如下:
package day05;
import java.net.URL;
import org.hamcrest.Matchers;
import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class SearchTest2 {
@DataProvider(name="ds",parallel=true)
public static Object[][] myData(){
Object[][] arr = {
{"internet explorer","http://192.168.0.131:5555/wd/hub","赵薇","黄有龙"},
{"chrome","http://192.168.0.131:5555/wd/hub","赵丽颖","冯绍峰"},
{"firefox","http://192.168.0.131:5555/wd/hub","王宝强","马蓉"}
};
return arr;
}
@Test(dataProvider="ds")
public void f(String browser,String node,String keyword,String expected) throws Exception{
DesiredCapabilities capability = DesiredCapabilities.internetExplorer();
capability.setBrowserName(browser);
capability.setPlatform(Platform.WINDOWS);
WebDriver driver = new RemoteWebDriver(new URL(node), capability);
//打开必应搜索网站
driver.get("http://www.bing.com");
//获取关键字的输入框
WebElement inputBox = driver.findElement(By.id("sb_form_q"));
//输入搜索关键字
inputBox.sendKeys(keyword);
//获取搜索的按钮
WebElement searchButton = driver.findElement(By.id("sb_form_go"));
//点击搜索
searchButton.click();
//searchButton.sendKeys(Keys.ENTER);
//
Thread.sleep(3000);
//获取服务器返回的搜索结果页面的html源码
String html = driver.getPageSource();
//验证结果
Assert.assertThat(html,Matchers.containsString(expected));
//等待3秒钟
Thread.sleep(3000);
//关闭浏览器
driver.quit();
}
}