gpt4 book ai didi

java - 如何使用继承设计带有页面对象模式的 Selenium 2 测试

转载 作者:搜寻专家 更新时间:2023-11-01 02:52:41 25 4
gpt4 key购买 nike

我们现在正在使用 Selenium 2 (Webdriver) 和 TestNG 编写一个新的测试套件。我们的测试使用页面对象模式,我们对目前的情况非常满意。但是,我们的测试遇到了设计问题,而且我们似乎无法找到好的解决方案。让我给你举个例子。这是我们的登录测试用例:

public class LoginTestCase extends MyTestCase {
@BeforeTest
public void login() {
HomePage homepage = PageFactory.initElements(getDriver(), HomePage.class);
LoginPage loginPage = homepage.login();
DashboardPage dashboardPage = loginPage.loginUser("username", "password");
}
}

我们想扩展我们的测试,要求用户从该测试中登录。理想情况下,我们可以这样写:

public class DashboardTestCase extends LoginTestCase {
@Test
public void testDashboard(DashboardPage dashboardPage) {
...
}
}

此时用户位于 DashboardPage,唯一需要的是在 LoginTestCase 中创建的该页面的对象。

我知道显而易见的解决方案是将该对象存储在一个变量中(在 LoginTestCase 中),子测试用例随后可以访问该变量。然而,这看起来非常丑陋,并可能导致滥用该变量。

是否有更好的解决方案或一些解决此设计问题的模式?

最佳答案

我们使用依赖注入(inject)和 Guice with Guice-berry 来解决这个问题。页面对象被注入(inject)到测试方法中,WebDriver 被注入(inject)到页面对象中。

作为权衡,我们没有在页面对象之间使用所有这些漂亮的小链接。

但是在并行测试执行方面,静态和单例是很麻烦的,因此应该避免它们。

关于java - 如何使用继承设计带有页面对象模式的 Selenium 2 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8378305/

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