美文网首页
Selenium Grid远程控制并发

Selenium Grid远程控制并发

作者: 测试老杨 | 来源:发表于2019-01-08 18:15 被阅读51次

扫码关注本人公众号

image.png

Selenium 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();
  }
}

执行Java脚本

grid190108.gif

相关文章

网友评论

      本文标题:Selenium Grid远程控制并发

      本文链接:https://www.haomeiwen.com/subject/lapbrqtx.html