gpt4 book ai didi

java - 在 webdriver 中维护浏览器 session

转载 作者:行者123 更新时间:2023-12-02 19:47:49 24 4
gpt4 key购买 nike

我在自动化流程中使用 Junit 4 和 Selenium webdriver。我有多个测试用例,每个测试用例都需要登录功能。

我想在同一个浏览器窗口中运行所有测试用例并维护登录 session ,而不是为每个测试用例打开新浏览器并每次都登录。 (在我当前的脚本中,我在每个测试用例中启动 webdriver,它为每个测试用例打开一个新窗口并每次都登录)

我想运行一个测试套件,我想在同一个浏览器窗口中运行所有测试用例。请给我一个解决方案。 代码:

public class first {
public static WebDriver driver;
@BeforeClass
public static void beforeClass()
{
System.setProperty("webdriver.chrome.driver", "E:/chromedriver.exe");
System.out.println("Before class");
driver = new ChromeDriver();
}
@Test
public void login()throws Exception
{
driver.get("URL");
WebElement login = driver.findElement(By.xpath("my xpath");
login.findElement(By.id("username")).sendKeys("username");
login.findElement(By.id("password")).sendKeys("pwd");
driver.findElement(By.xpath("my xpath")).click();
}

}

创建第二类:

public class second {
public static WebDriver driver;
{
@Test
public void nextstep()throws Exception
{
WebElement buttons = driver.findElement(By.xpath("my xpath"));
buttons.findElement(By.className("Classname")).click();

}

}

测试套件类:

@RunWith(Suite.class)
@SuiteClasses({first.class, second.class})
public class testsuite
{
public static WebDriver driver;
@BeforeClass
public static void setUpClass()
{
System.out.println("Master Setup");
}

}

最佳答案

您需要实现一个套件设置方法,该方法打开一个新的浏览器窗口并登录。这样,该方法将在执行所有测试之前被调用一次。

要将方法指定为 Suite Setup 方法,请将其放入 Suite 类中,使其静态并使用 @BeforeClass 进行注释(请参阅 this answer 中的示例)。

在您发布的代码中,第一个类中的 driver 变量和第二个类中的 driver 变量不是同一个变量 。这就是为什么在第一个类中初始化它确实会使第二个类中的 driver 初始化,并且您会得到一个 NullPointerException
如果您想在两个类中使用相同的变量,您需要定义一个具有非静态变量 driver 的基类(为什么首先将其设为静态?),然后派生两者都是从基类分类的。

关于java - 在 webdriver 中维护浏览器 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17916444/

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