当前位置: 首页 > 知识库问答 >
问题:

TestNG Selenium Grid 2没有并行运行测试

沈永新
2023-03-14

当我试图在Selenium Grid 2旁边使用TestNG并行运行测试时,我似乎遇到了一个问题。

尽管打开的浏览器数量与我正在运行的测试数量相匹配,但所有测试的所有指令都被发送到同一个浏览器窗口。例如,每个测试都会打开一个页面并尝试登录。四个浏览器窗口将打开,但一个浏览器窗口将导航到登录页面四次,然后键入用户名四次,而其余的浏览器窗口保持不活动。

以下是我如何启动网格:

java -jar selenium-server-standalone-28.0.jar -role hub
java -jar selenium-server-standalone-28.0.jar -webdriver.chrome.driver="*location*/chromedriver_mac" -role node 

xml套件是这样设置的:

<suite name="testng" verbose="1" parallel="classes">
    <test name="chrome">
        <packages>
            <package name="login"/>
            <package name="lists"/>
        </packages>
    </test>
</suite>

这里有一个测试布局的例子:

public class login_logout extends TestBase {
    @Test
    public void login(){
        //initiates login page object and call super user login
        LoginPage login = LoginPage.navigateTo(driver, base_url)
        LoggedInPage loggedIn = login.superuserlogin();
        }
    }

试验基地布置如下:

public class TestBase {
    public static WebDriver driver;
    public static DesiredCapabilitiess capabilities;
    @BeforeClass
    public static void setUp(){
        base_url = "*login page url*;
        capabilities = DesiredCapabilities.chrome();
        driver = new RemoteWebDriver(capabilities);
        driver.get(base_url);
    }
}

很可能我错过了一些非常明显的东西,但任何帮助都将不胜感激。

提前感谢。

共有2个答案

华浩壤
2023-03-14

在我看来,您选择WebDriver和TestNG是正确的。但由于这些都是非常强大的工具,所以有一些基础知识你应该知道。

在第一步中,有一些编程经验很重要。

其次,你可以添加一些具体的技巧。

为什么不在每个测试类中初始化一个网络驱动程序(无论是在构造函数中还是在@BeforeClass中)?

稍后,还可以使用@DataProvider和@Factory模式进行配置。

太酷了!

华泳
2023-03-14

驱动程序对象是静态的。所以你有4次初始化,4个浏览器启动,但是驱动程序是静态的,它只保存对上一次初始化的浏览器的引用,因此你所有的命令都是针对同一个驱动程序执行的。您可以尝试为并行运行探索Threadlocal对象。

 类似资料:
  • Cucumber测试没有并行运行(Cucumber jvm并行插件)? 如果我使用runner类执行测试,一次将执行一个功能文件,但是当将以下插件添加到POM文件时,似乎没有功能文件执行? 即使我指向了正确的功能文件文件夹? 我的POM文件:

  • 我试图用TestNG并行运行一个示例测试项目。但它是在一个线程中顺序执行的。我漏掉什么了吗? 谢了。

  • 尝试在maven中重新访问Junit 5平台(5.3.2)下运行Junit 5/4集成测试。从如何使用maven failsafe插件并行运行JUnit 4和JUnit 5测试 在surefire插件2.22.1下运行单元测试可以并行和混合测试JUnit 5和JUnit 4,并在详细信息中查看工作线程。 在故障安全2.22.1中尝试了同样的方法,但是需要日志时间,并且似乎没有并行执行。而且只有[m

  • 为了减少测试的运行时间,我希望并行运行测试。我有几个不能并行运行的类。 假设我有两种类型的类:-并行类-包含类1,类2-不并行类-包含类3,类4我想并行运行类1和类2到类3和类4(但lass3不会并行运行到类4) 我试图这样做: 我并行运行这两个测试,但只有第一个测试具有类的并行性。 如果我可以选择添加parallel=“classes”进行测试,我尝试在TestNG文档中搜索。我看不到,但它正在

  • 我目前正在尝试使用Cucumber实现并行测试运行。我设法使用万无一失的插件同时运行了两个不同的运行程序。现在我想检查是否可以并行运行SingleRunner文件多次。 我有一个签名测试。所以我需要在几个平台上并行运行。有可能吗? 这是我的跑步者档案 无跑道进近 工厂级 `导入org . open QA . selenium . web driver; ` 阶梯班 导入org.openqa.sel