Selenium Grid深入学习
作者:网络转载 发布时间:[ 2014/9/12 11:07:19 ] 推荐标签:软件测试 测试工具
应网友要求写一个用Selenium Grid控制多系统多浏览器并行执行test case的例子。
因为我这里有两台机子,我打算这样演示:
一台机子启动一个作为主点节的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();
}
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11