gpt4 book ai didi

selenium-webdriver - 如何使用 TestNg 和 eclipse 在多个浏览器中一个接一个地运行 Selenium webdriver 测试用例

转载 作者:行者123 更新时间:2023-12-04 07:56:53 24 4
gpt4 key购买 nike

我想在所有多个浏览器中运行 selenium webdriver 测试用例但不是并行。是否可以在所有多个浏览器中运行测试用例而不使用 xml 和 selenium 网格。我们可以通过使用注释和 java 类。我希望我的测试用例应该首先在 firefox 中执行,在 firefox 中完成执行后它应该开始在 chrome 中执行等等。

我试过这段代码,但使用 xml 是并行执行的。

CrossBrowserScript.java

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class CrossBrowserScript {

WebDriver driver;

/**
* This function will execute before each Test tag in testng.xml
* @param browser
* @throws Exception
*/
@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
System.setProperty("webdriver.chrome.driver",".\\chromedriver.exe");
//create chrome instance
driver = new ChromeDriver();
}
//Check if parameter passed as 'IE'
else if(browser.equalsIgnoreCase("ie")){
//set path to IE.exe
System.setProperty("webdriver.ie.driver",".\\IEDriverServer.exe");
//create IE 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);
}

@Test
public void testParameterWithXML() throws InterruptedException{
driver.get("http://demo.guru99.com/V4/");
//Find user name
WebElement userName = driver.findElement(By.name("uid"));
//Fill user name
userName.sendKeys("guru99");
//Find password
WebElement password = driver.findElement(By.name("password"));
//Fill password
password.sendKeys("guru99");
}
}

testngCrossBrowser.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" thread-count="3" parallel="tests" >
<test name="ChromeTest">
<parameter name="browser" value="Chrome" />
<classes>
<class name="parallelTest.CrossBrowserScript">
</class>
</classes>
</test>
<test name="FirefoxTest">
<parameter name="browser" value="Firefox" />
<classes>
<class name="parallelTest.CrossBrowserScript">
</class>
</classes>
</test>
<test name="IETest">
<parameter name="browser" value="IE" />
<classes>
<class name="parallelTest.CrossBrowserScript">
</class>
</classes>
</test>
</suite>

最佳答案

使用 JUnit,您可以创建将在所有浏览器中运行测试的 MethodRule ( http://junit.org/apidocs/org/junit/rules/MethodRule.html)。

例子:

public class ManyBrowsers implements MethodRule {

public static WebDriver driver;

@Override
public Statement apply(final Statement base, FrameworkMethod method, Object target) {
return new Statement() {

@Override
public void evaluate() throws Throwable {
//RUN FIREFOX
driver = new FirefoxDriver();
base.evaluate();
driver.quit();

//RUN CHROME
File f = //PATH to CHROME DRIVER
System.setProperty("webdriver.chrome.driver", f.getAbsolutePath());
driver = new ChromeDriver();
base.evaluate();
driver.quit();
}
};
}

示例测试:

public class VisitGoogle {

@Rule
public ManyBrowsers browsers = new ManyBrowsers();

@Test
public void test() {
ManyBrowsers.driver.navigate().to("https://www.google.com/");
}

关于selenium-webdriver - 如何使用 TestNg 和 eclipse 在多个浏览器中一个接一个地运行 Selenium webdriver 测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29486221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com