Comment faire pour exécuter Selenium webdriver des cas de test dans plusieurs navigateur l'un après l'autre navigateur obtenir la finition à l'aide de TestNg et eclipse
Je veux courir selenium webdriver des cas de test dans tous les navigateur multiples mais pas en parallèle.Est-il possible d'exécuter des cas de test dans tous les multiples de navigateur sans l'aide de xml et de sélénium de la grille.On peut le faire en utilisant l'annotation et des classes java.Je voulais que mon cas de test à exécuter dans firefox en premier et après l'achèvement de l'exécution dans firefox, il devrait commencer à exécution dans google chrome, et ainsi de suite.
J'ai essayé ce code mais l'exécution est parallèle à l'aide de 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>
- vnnogile, vous devez les accepter une réponse. Pawels réponse a fonctionné pour moi!
Vous devez vous connecter pour publier un commentaire.
Avec JUnit vous pouvez créer MethodRule ( http://junit.org/apidocs/org/junit/rules/MethodRule.html ), qui permettra d'exécuter des tests dans tous les navigateurs.
Exemple:
}
Exemple de test:
}
Essayez de changer
thread-count="3"
àthread-count="1"
. Cela devrait exécuter les tests dans l'ordre mentionné par vous dans TestNG fichier.