【问题标题】:TestNG Parallel execution always fails when i run more than one testcase, Among all only one testscript was passing当我运行多个测试用例时,TestNG 并行执行总是失败,其中只有一个测试脚本通过
【发布时间】:2021-01-15 17:52:43
【问题描述】:

我正在使用 Testng 来并行执行我的 Web 测试用例。我总共有 5 节课。

  1. BaseClass - 用于初始化和关闭我的浏览器
  2. 核心类 - 初始化所有驱动程序的中介
  3. 可重用方法 - Click、settext、gettext...[扩展了步骤 #2 核心类,因此驱动程序仅来自那里]
  4. 页面对象类 - 存储所有定位器,如名称、ID、xpath。使用所有可重复使用的方法,如 click、gettext、settext。
  5. 主要测试类。

基类

public class TestNGBase {
ThreadLocal<WebDriver> localdriver = new ThreadLocal<>();

@BeforeMethod
public void initialize(){
    System.setProperty("webdriver.chrome.driver","C:\\SeleniumTest\\chromedriver.exe");
    localdriver.set(new ChromeDriver());
}

public WebDriver driver(){
    Core.setDriver(localdriver.get());
    return localdriver.get();
}

@AfterMethod
public void teardown(){
    localdriver.get().close();
    localdriver.remove();
}
}

核心类:

public class Core {

protected static WebDriver driver;

public static void setDriver(WebDriver driverr) {
    driver = driverr;
    
}
}

可重用类:

public class WebMethods extends Core {
public WebMethods() {
    
}

public static void Click(By by) {              
        driver.findElement(by).click();       
}

PageObject 类

public class pagemethods(){

By login = By.name("login");

public void login(){
WebMethods.click(login);}
}

MainTestclass1 : 将使用上面的 Pageobject MainTestclass2 : 将使用上面的 Pageobject MainTestclass3 : 将使用上面的Pageobject

所以在以上 3 个测试用例中,当我触发所有使用 testng.xml 文件的测试用例时。 3 新的浏览器被初始化并成功打开了 url。但是当我开始使用所有那些可重用的方法时,比如 click()。在 3 个测试用例中,两个测试用例中的任何一个总是失败。

我认为问题会启动 Core 类,因为它同时接收所有驱动程序。它正在崩溃。

谁能帮我解决这个并行执行失败的问题。

谢谢

【问题讨论】:

  • 您需要摆脱“受保护的静态 WebDriver 驱动程序;”在 Core 类中。您在 TestBase 类中与 TestNGBase 中的 threadlocal 走在正确的道路上。无论您在哪里需要司机,请 threalocal 提供它stackoverflow.com/a/62674338/5324105

标签: java selenium automation testng parallel-execution


【解决方案1】:

尽量不要将主类设为静态。创建一个创建类实例然后执行的类。当你创建一个静态类时,方法是挂在那个类上的,而不是一个实例。

例如

public WebDriver
{

WebDriver myWebDriver = new WebDriver();
myWebDriver.whateverMethod();

}

使用线程时避免静态。先试试看。

【讨论】:

    猜你喜欢
    • 2017-12-27
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2016-10-24
    相关资源
    最近更新 更多