TestNG并发执行测试
Selenium Grid能够分布式在不同机器上运⾏不同浏览器,但是我们看到的串⾏的效果(也就是⼀个浏览器执⾏结束 后,再运⾏另外⼀个浏览器)。要达到并发执⾏的效果,Selenium Grid是做不到的,我们需要通过TestNG单元测试 框架所带的并发执⾏机制。并发执⾏能够带来的好处:
1、减少了执⾏时间:并⾏测试也就意味着多个浏览器可以在同⼀时间被同时执⾏,从⽽减少了整体测试所花费的时 间
2、允许多个线程并⾏同时执⾏⼀个测试脚本/不同的测试脚本
TestNG并发测试配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="tests" thread-count="2">
<test name="test1">
<parameter name="browserName" value="chrome"></parameter>
<classes>
<class name="tester" />
</classes>
</test>
<test name="test2">
<parameter name="browserName" value="firefox"></parameter>
<classes>
<class name="tester" />
</classes>
</test>
</suite>
test测试类
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.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class tester {
@Test
@Parameters({"browserName"})
public void testGrid(String browserName) throws MalformedURLException, InterruptedException {
// 期望能力对象
DesiredCapabilities capabilities = new DesiredCapabilities();
// 配置测试的浏览器
capabilities.setBrowserName(browserName);
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);
}
}
操作说明
1、selenium Grid的分布测试,结合testng的并发测试。可以同时在不同浏览器上执行多个测试脚本。提高测试的效率
2、并发的配置设置在suit标签对中。引用testng的paramter参数,运行在某个浏览器上做参数化。
3、执行testng的套件,就可以同时运行多个浏览器。