【发布时间】:2017-07-27 15:08:42
【问题描述】:
我在 Web Driver 中有一段代码,如下所述。一个类中有两个 @Test 方法,我正在尝试使用 testng.xml 并行执行。
谁能告诉我我在这里做错了什么
public class CrossBrowserScript {
WebDriver driver;
@BeforeTest
@Parameters("browser")
public void setup(String browser) throws Exception{
//Check if parameter passed from TestNG is 'firefox'
if(browser.equalsIgnoreCase("firefox")){
//create firefox instance
driver = new FirefoxDriver();
}
//Check if parameter passed as 'chrome'
else if(browser.equalsIgnoreCase("chrome")){
//set path to chromedriver.exe You may need to download it from http://code.google.com/p/selenium/wiki/ChromeDriver
System.setProperty("webdriver.chrome.driver","E:\\Maven\\chromedriver.exe");
//create chrome instance
driver = new ChromeDriver();
}
else if(browser.equalsIgnoreCase("ie")){
//set path to IEdriver.exe You may need to download it from
// 32 bits http://selenium-release.storage.googleapis.com/2.42/IEDriverServer_Win32_2.42.0.zip
// 64 bits http://selenium-release.storage.googleapis.com/2.42/IEDriverServer_x64_2.42.0.zip
System.setProperty("webdriver.ie.driver","E:\\Maven\\IEDriverServer.exe");
//create chrome instance
driver = new InternetExplorerDriver();
}
else{
//If no browser passed throw exception
throw new Exception("Browser is not correct");
}
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
}
package checking;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class test extends CrossBrowserScript{
@Parameters({ "browser" })
@Test
public void checking_value(){
//WebDriver driver = new FirefoxDriver();
driver.get("http://www.sourcefuse.com/");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
if(driver.getPageSource().contains("Our Work"))
{
System.out.println("Found the text");
}
else
{
System.out.println("Not able to found the text");
}
}
@Parameters({ "browser" })
@Test
public void second_method(){
driver.get("http://www.sourcefuse.com/");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
if(driver.getPageSource().contains("Our Work"))
{
System.out.println("Found the text");
}
else
{
System.out.println("Not able to found the text");
}
}
}
*************************************************************
TestNG.xml File
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Multiple Tests" parallel="tests" thread-count="2">
<test name="Test One">
<parameter name="browser" value="Chrome" />
<classes>
<class name="checking.test">
</class>
</classes>
</test>
<test name="Test two">
<parameter name="browser" value="Firefox" />
<classes>
<class name="checking.test">
</class>
</classes>
</test>
</suite>
当我执行时,它打开 2 个浏览器并执行上述代码总共 4 次,但我担心我想在 2 个不同的浏览器中运行两个 @Test。
【问题讨论】:
-
您可能对 TestNG 所指的测试感到困惑,当您说 parallel="tests" 时,它将考虑您在 Test One 和 中提到的所有测试b>测试两个配置。更改配置以仅包含特定测试而不是整个班级,问题可能会得到解决。
-
Hey Gagan,你能告诉我在这种情况下我应该写什么吗?浏览器并行模式
-
在这种情况下任何人都可以帮助我
-
嗨,Akash,我相信你应该改写你的标题。据我了解,您没有两个要在一个类文件中执行的方法,但更多的是您有两个要并行执行的测试。如果这是您所追求的,我将发布正确的 XML 作为解决方案。
标签: java selenium automated-tests testng selenium-firefoxdriver