Quantcast
Channel: Active questions tagged selenium - Stack Overflow
Viewing all articles
Browse latest Browse all 98819

When I try to run two classes parallelly in TestNG xml, 2nd class gives error. But works if both classes are run individually

$
0
0

I am using POM by selenium java. While trying to run two classes parallelly with TestNG xml I am facing this issue that the second class is not running properly. But when I use @BeforeClass annotation, then with two different windows, the second class runs perfectly.

My whole Page Object Model page classes and test classes are given below

Base Page:

package pages;import org.openqa.selenium.WebDriver;import org.openqa.selenium.support.PageFactory;import org.openqa.selenium.support.ui.WebDriverWait;import java.time.Duration;public class BasePage {    WebDriver driver;    WebDriverWait wait;    public BasePage(WebDriver driver) {        this.driver = driver;        this.wait = new WebDriverWait(driver, Duration.ofSeconds(10));        PageFactory.initElements(driver, this);    }}

Login page:

package pages;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.support.FindBy;import org.openqa.selenium.support.ui.ExpectedConditions;public class LoginPage extends BasePage{    public LoginPage(WebDriver driver) {        super(driver);    }    // sign in button locator    @FindBy(css = ".login-btn")    WebElement SetSignInBtn;    // email locator    @FindBy(xpath = "//div[@class='form-group label-up']//input[@type='text']")    WebElement SetEmailField;    // proceed btn locator    @FindBy(css = ".form-group.text-center")    WebElement SetProceedBtn;    // password locator    @FindBy(css = "input[type='password']")    WebElement SetPass;    // sign in button locator    @FindBy(id = "sign_in_button")    WebElement SignBtn;    public void Login(String mail, String passWord){        // sign in button click        SetSignInBtn.click();        // email field input        wait.until(ExpectedConditions.visibilityOf(SetEmailField));        SetEmailField.sendKeys(mail);        // proceed button click        SetProceedBtn.click();        // pass field input        wait.until(ExpectedConditions.visibilityOf(SetPass));        SetPass.sendKeys(passWord);        SignBtn.click();    }}

Recharge Page:

package pages;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.support.FindBy;import org.openqa.selenium.support.ui.ExpectedConditions;import org.openqa.selenium.support.ui.Select;import java.beans.Visibility;public class RechargePage extends BasePage{    public RechargePage(WebDriver driver) {        super(driver);    }    @FindBy(id = "typeahead-basic")    WebElement mobileNumberField;    @FindBy(id = "telecom-operator")    WebElement selectOperator;    @FindBy(id = "connection-type")    WebElement connectionType;    @FindBy(xpath = "//input[@formcontrolname='amount']")    WebElement amount;    @FindBy(css = "button[type='submit']")    WebElement proceedBtn;    public void recharge(String mobileNumber, String rechargeAmount){        mobileNumberField.sendKeys(mobileNumber);        wait.until(ExpectedConditions.visibilityOf(selectOperator));        selectOperator.click();        WebElement operatorDropdown = driver.findElement(By.id("telecom-operator"));        Select dropDownOperator = new Select(operatorDropdown);        dropDownOperator.selectByIndex(5);        //dropDownOperator.getFirstSelectedOption().click();        wait.until(ExpectedConditions.visibilityOf(connectionType));        connectionType.click();        WebElement connectionDropdown = driver.findElement(By.id("connection-type"));        Select dropDownConnection = new Select(connectionDropdown);        dropDownConnection.selectByIndex(1);        amount.sendKeys(rechargeAmount);        wait.until(ExpectedConditions.visibilityOf(proceedBtn));        proceedBtn.click();    }}

Base Test:

package pages;import io.github.bonigarcia.wdm.WebDriverManager;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.*;import java.util.concurrent.TimeUnit;public class BaseTest {    WebDriver driver;    @BeforeSuite    public void setup(){        WebDriverManager.chromedriver().setup();        driver = new ChromeDriver();        driver.manage().window().maximize();        driver.navigate().to("https:");        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);    }    @AfterSuite    public void tearDown() throws InterruptedException {        Thread.sleep(5000);        driver.close();    }}

Login Test:

package pages;import org.testng.annotations.Test;public class LoginTest extends BaseTest{    @Test(priority = 1)    public void testLogin() throws InterruptedException {        LoginPage loginPage = new LoginPage(driver);        loginPage.Login("01791557029", "123456");        Thread.sleep(5000);    }}

Recharge Test:

package pages;import org.testng.annotations.Test;public class RechargeTest extends BaseTest{    @Test(priority = 2)    public void testRecharge(){        RechargePage rechargePage = new RechargePage(driver);        rechargePage.recharge("01687663220", "100");    }}

And here is my TestNG xml file:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"><suite name="All Test Suite" verbose="2" parallel="classes" thread-count="2"><test name="Test Cases"><classes><class name="pages.LoginTest"><methods><include name="testLogin"/></methods></class><class name="pages.RechargeTest"><methods><include name="testRecharge"/></methods></class></classes></test></suite>

Viewing all articles
Browse latest Browse all 98819

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>