多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

Selenium Grid深入学习-自动化测试

更新时间:2022-05-07 09:09:14 作者:多测师 浏览:42

  应网友要求写一个用Selenium Grid控制多系统多浏览器并行执行test case的例子。因为我这里有两台机子,我打算这样演示:

Selenium Grid深入学习-自动化测试

  一台机子启动一个作为主点节的hub 和 一个作为次节点的hub(系统windows 浏览器为ie) ip为:192.168.40.24

  另一台机子启动两个次节点hub,一个次节点浏览器为firefox,另一个浏览器为chrome (系统为windows),ip为:192.168.40.67

  启动各节点hub

  启动主节点hub命令:

  java -jar selenium-server-standalone-2.24.1.jar -role hub

  启动与主节点同一机子的次节点hub命令:

  java -jar selenium-server-standalone-2.24.1.jar -role node  -hub http://localhost:4444/grid/register -browser browserName="internet explorer"

  启动另外一台机子的两个节点hub命令分别为:

  启动firefox的

  java -jar selenium-server-standalone-2.24.1.jar   -Dwebdriver.firefox.bin="D:/Program Files/Mozilla Firefox/firefox.exe" -role webdriver  -hub http://192.168.40.24:4444/grid/register -browser browserName=firefox

  其中-Dwebdriver.firefox.bin="D:/Program Files/Mozilla Firefox/firefox.exe"这个是传我的firefox浏览器安装地址,不然找不到。

  启动chrome的

  java -jar selenium-server-standalone-2.24.1.jar   -Dwebdriver.chrome.driver="D:/chromedriver.exe" -role webdriver  -hub http://192.168.40.24:4444/grid/register -port 6666 -browser browserName=chrome

  其中-Dwebdriver.chrome.driver="D:/chromedriver.exe",这个是传入我chromedriver.exe的放置地址。端口设为6666,防止和上面firefox的重复。

  链接好后,可以在http://localhost:4444/grid/console可以查看到三个子节点的状态。启动详细方法可以参考前面的文章。

  Selenium Grid只是提供多系统、多浏览器的执行环境,而不是说任务一个test case丢给它就能并行运行。并行的运行我这里就交给testng了。看下面代码和配制。

  testcase 代码 和 testng.xml

  testcase代码:

package driver;

import java.net.MalformedURLException;

import java.net.URL;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.remote.DesiredCapabilities;

import org.openqa.selenium.remote.RemoteWebDriver;

import org.testng.annotations.AfterMethod;

import org.testng.annotations.BeforeMethod;

import org.testng.annotations.Parameters;

import org.testng.annotations.Test;

public class GridParallelTests {

private WebDriver dr;

DesiredCapabilities test;

String baseUrl;

@Parameters({"browser","nodeUrl","webSite"})

@BeforeMethod

public void setUp(String browser,String nodeUrl,String webSite){

baseUrl = webSite;

if(browser.equals("ie")) test = DesiredCapabilities.internetExplorer();

else if(browser.equals("ff")) test = DesiredCapabilities.firefox();

else if(browser.equals("chrome")) test = DesiredCapabilities.chrome();

else System.out.println("browser参数有误,只能为ie、 ff、chrome");

String url = nodeUrl + "/wd/hub";

URL urlInstance = null;

try {

urlInstance = new URL(url);

} catch (MalformedURLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("实例化url出错,检查一下url格式是否正确,格式为:http://192.168.40.67:5555");

}

dr = new RemoteWebDriver(urlInstance,test);

dr.get(webSite);

}

@Test

public void test(){

dr.get(baseUrl);

dr.findElement(By.id("kw")).sendKeys("selenium");

dr.findElement(By.id("su")).click();

try {

Thread.sleep(10000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("title:"+dr.getTitle());

}

@AfterMethod

public void quit(){

dr.close();

}

}

testng.xml:

<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >

<suite name="Suite1"  parallel="tests" thread-count="5">

<test name="test1">

<parameter name="browser" value="ff"/>

<parameter name="nodeUrl" value="http://192.168.40.67:5555"/>

<parameter name="webSite" value="http://www.baidu.com"/>

<classes>

<class name="driver.GridParallelTests"></class>

</classes>

</test>

<test name="test2">

<parameter name="browser" value="chrome"/>

<parameter name="nodeUrl" value="http://192.168.40.67:6666"/>

<parameter name="webSite" value="http://www.baidu.com"/>

<classes>

<class name="driver.GridParallelTests"></class>

</classes>

</test>

<test name="test3">

<parameter name="browser" value="ie"/>

<parameter name="nodeUrl" value="http://192.168.40.24:5555"/>

<parameter name="webSite" value="http://www.baidu.com"/>

<classes>

<class name="driver.GridParallelTests"></class>

</classes>

</test>

</suite>

  运行testng.xml就可以了。

  如果你是用ant把上面的参数传进去也是可以的。我这里就直接简单地放在testng.xml了。

  以上内容为大家介绍了自动化测试中的Selenium Grid深入学习,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部