我使用Selenium web驱动程序+ TestNG并行运行我的selenium测试。我用了三个班级
第一类(主要类别):
从这堂课开始,我将开始考试。我执行的起点。
public class MainClass {
public WebDriver driver = null;
public void gid() {
try {
CreateTestngXml.gridHubLaunching();
Thread.sleep(10000);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
CreateTestngXml.grid("firefox", "chrome");
driver.close();
}
public static void main(String a[]) {
MainClass ts = new MainClass();
try{
ts.gid();
}catch(Exception e){
e.printStackTrace();
}
}
}
第二类(CreateTestngXml):
public class CreateTestngXml {
/**
*
* @param Brow
* @param Brows
* @code = To create a TestNg XML suite file and run it.
*/
public static void grid(String Brow, String Brows) {
XmlSuite suite = new XmlSuite();
suite.setName("Compatability");
suite.setVerbose(1);
suite.setPreserveOrder("true");
suite.setThreadCount(4);
suite.setParallel("tests");
suite.setTimeOut("5000");
// Test
XmlTest test = new XmlTest(suite);
test.setName("Browser One");
test.addParameter("Browser", Brow);
XmlTest testOne = new XmlTest(suite);
testOne.setName("Browser Two");
testOne.addParameter("Browser", Brows);
List<XmlTest> tests = new ArrayList<XmlTest>();
tests.add(test);
tests.add(testOne);
// Class
List<XmlClass> classes = new ArrayList<XmlClass>();
classes.add(new XmlClass("Grid.CheckGridOne"));
test.setXmlClasses(classes);
testOne.setXmlClasses(classes);
suite.setTests(tests);
// Suite
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
try {
// Running the Suite file.
tng.run();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @throws IOException
* @throws InterruptedException
* @code = To launch the Grid Hub and Nodes
*/
public static void gridHubLaunching() throws IOException,
InterruptedException {
// Launching nodes for each browser.
String[] hub = new String[] { "C:\\Windows\\System32\\cmd.exe", "/c",
"Start", "Grid-BatchFiles\\hub.bat" };
String[] firefox = new String[] { "C:\\Windows\\System32\\cmd.exe",
"/c", "Start", "Grid-BatchFiles\\firefox.bat" };
String[] chrome = new String[] { "C:\\Windows\\System32\\cmd.exe",
"/c", "Start", "Grid-BatchFiles\\chrome.bat" };
String[] ie = new String[] { "C:\\Windows\\System32\\cmd.exe", "/c",
"Start", "Grid-BatchFiles\\IE.bat" };
Runtime.getRuntime().exec(hub);
Thread.sleep(3000);
Runtime.getRuntime().exec(firefox);
Runtime.getRuntime().exec(chrome);
Runtime.getRuntime().exec(ie);
}
}
gridHubLaunching()
方法用于启动集线器和相应的浏览器节点。它在创建节点时没有问题。我使用http://localhost:4444/grid/console
第三类(Grid.CheckGridOne):
public class CheckGridOne {
MainClass ts = new MainClass();
WebDriver driver = ts.driver;
DesiredCapabilities capability = null;
/**
*
* @param Browser
* @throws Exception
* @code = To launch a Browser for Compatibility Testing purpose.
*/
@Test
@Parameters({ "Browser" })
public void browserLaunch(String Browser) throws Exception {
// Checking condition for a Firefox.
if (Browser.equalsIgnoreCase("firefox")) {
System.out.println("Firefox");
capability = DesiredCapabilities.firefox();
capability.setBrowserName("firefox");
capability.setPlatform(org.openqa.selenium.Platform.WINDOWS);
URL url = new URL(`http://lo***st:4444/wd/hub`);
System.out.println("testing");
driver = new RemoteWebDriver(url, capability);
System.out.println("test");
}
// Checking condition for a iexplorer.
if (Browser.equalsIgnoreCase("iexplorer")) {
System.out.println("IE");
System.setProperty(
"webdriver.ie.driver",
"E:\\FW\\Test-2.28.0(Feb-18)\\IEDriverServer\\64-Bit\\IEDriverServer.exe");
capability = DesiredCapabilities.internetExplorer();
capability.setBrowserName("internet explorer");
capability.setPlatform(org.openqa.selenium.Platform.ANY);
System.out.println("testing");
driver = new RemoteWebDriver(new URL(
`http://lo***st:4444/wd/hub`), capability);
System.out.println("test");
}
// Checking condition for a chrome.
if (Browser.equalsIgnoreCase("chrome")) {
System.out.println("chrome");
}
}
}
通过使用上述三个类,我尝试并行运行硒测试。我的问题是它在第三类到达driver = new RemoteWebDriver(url, capability);
之前工作正常。一旦到达该行,它就会终止TestNG suite file
。我不知道我的代码问题是什么?
输出:
[TestNG] Running:
Command line suite
Firefox
IE
testing
testing
===============================================
Compatability
Total tests run: 0, Failures: 0, Skips: 0
===============================================
test
test
输出显示总测试运行为0
。我不知道为什么会这样表现出来。
Selenium Server - 2.28.0
TestNG - 6.1.1&amp; 6.8
IEDriverServer - 2.28.0
我知道问题有点大。我认为这是解释清楚的正确方法。任何帮助将不胜感激。
答案 0 :(得分:0)
€DIT:你为什么要再次从三等班回到头等舱?这似乎是一个循环。
只需在第3课中定义您的WebDriver。
public class CheckGridOne {
@Test
@Parameters({ "Browser" })
public void browserLaunch(String Browser) throws Exception {
WebDriver driver = null;
// Checking condition for a Firefox.
if (Browser.equalsIgnoreCase("firefox")) {
System.out.println("Firefox");
capability = DesiredCapabilities.firefox();
capability.setBrowserName("firefox");
capability.setPlatform(org.openqa.selenium.Platform.WINDOWS);
URL url = new URL(`http://lo***st:4444/wd/hub`);
System.out.println("testing");
driver = new RemoteWebDriver(url, capability);
System.out.println("test");
}
// Checking condition for a iexplorer.
if (Browser.equalsIgnoreCase("iexplorer")) {
System.out.println("IE");
System.setProperty(
"webdriver.ie.driver",
"E:\\EproNewFW\\SWIFTest-2.28.0(Feb-18)\\IEDriverServer\\64-Bit\\IEDriverServer.exe");
capability = DesiredCapabilities.internetExplorer();
capability.setBrowserName("internet explorer");
capability.setPlatform(org.openqa.selenium.Platform.ANY);
System.out.println("testing");
driver = new RemoteWebDriver(new URL(
`http://lo***st:4444/wd/hub`), capability);
System.out.println("test");
}
// Checking condition for a chrome.
if (Browser.equalsIgnoreCase("chrome")) {
System.out.println("chrome");
}
}
}