gpt4 book ai didi

java - 我们可以使用静态变量来初始化 selenium webdriver 中的 webdriver

转载 作者:行者123 更新时间:2023-12-02 05:49:07 25 4
gpt4 key购买 nike

我们有一个静态变量来初始化 Selenium WebDriver 中的驱动程序。

公共(public)静态 WebDriver 驱动程序;

该变量在类(DriverInit)中声明,并在各种测试计划(测试类)的“@BeforeClass”中初始化。初始化的变量(驱动程序)将在整个项目中的各种可重用函数和@test方法中使用。驱动程序将在 @QAfterClass

处关闭/退出

这对于非并行执行脚本来说效果很好。使用静态变量来初始化驱动程序是否会影响并行执行?

例如:

public class DriverInit { (using remote webdriver, browser name will be read from XML)
public static WebDriver driver;
public DriverInit() {
switch (browser) {
case "IE" : driver = ....
case "Firefox" : driver = ....
}
}
}

public class TestClass {
@BeforeClass
public void BeforeClass() {
DriverInit driver = new DriverInit();
}

@Test
public void Test1() {
DriverInit.driver.findElementBy();
Reusable.func1();
}
}

Public class Reusable {

public WebElement r1;
public Reusable() {
r1 = DriverInit.driver.findElementBy(..);
}
public void func1() {
r1.findElementBy(..);
}
}

最佳答案

正如您所说,您可以使用静态驱动程序,但是,是的,如果直接在测试代码级别进行任何并行化,您将面临共享内存问题的风险。

出于这个原因,我避免使用静态驱动程序,这对于可能发展为并行化的测试套件来说是糟糕的设计。在 Selenium 网格中的多个服务器上运行单个进程启动测试是行不通的。

我围绕这种情况设计的方法是在初始化每个页面对象时将驱动程序(在@Before中创建)传递给它们。

如果套件不会增长,您仍然可以使用静态驱动程序,并将多个测试作为单独的作业启动(即单独的 Jenkins 作业,或从命令行单独运行等)

关于java - 我们可以使用静态变量来初始化 selenium webdriver 中的 webdriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23735885/

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