gpt4 book ai didi

java - Selenium 结构化模式java

转载 作者:行者123 更新时间:2023-11-30 04:04:17 25 4
gpt4 key购买 nike

我对 Selenium 还很陌生,但有良好的编码经验

我正在研究非常复杂的网络应用程序的自动化。对于我的测试,我使用 junit 框架。

我不希望我的类扩展到巨大的大小,所以这就是我在每页上划分自动化的方式。对于前。我有主页。从它我可以进入设置、仪表板和许多其他页面。因此,与主页相关的所有修改/功能我都保留在主页类中。然后,对于每个下一页,我都有另一个类,我在其中创建 webdriver 并将其分配给上一页 webdriver。因此,每个类都反射(reflect)了我可以在该特定页面上实现的功能。

所以假设我有第四级页面,我将有一个第四级的类,在创建它时将创建第三级页面,第三级将首先创建第二级页面,依此类推,在某些时候我会得到一直到第一个登录页面。基本上我有一棵树,其头部有我的登录页面。

它工作得很好,在使用 junit 之前我没有任何问题。我喜欢在我的 @After 类中关闭浏览器的想法,并且我有不同的页面类。我如何将它们组合在一起,无论我在测试中创建和使用什么类页面,我的 after 方法是关闭该浏览器?

谢谢

最佳答案

最好的方法是在所有测试扩展的类中添加一个 After 方法。例如:

Class A extends T
Class B extends T

Class T {
WebDriver driver;

@After
public void tearDown() {
driver.quit();
}
}

现在,当您的 A#testMethod1 完成时,它将从继承的 @After 方法执行 tearDown()

此外,就您的页面而言,请按照 @CeilingGecko 的说明进行操作,并仅使用 1 个 Webdriver 实例。你可以这样做:

Class A extends T {
LoginPage loginPage = new LoginPage(driver);

@Test
public void testMethod1() {
loginPage.login("username", "password");
}
}

Class LoginPage {
WebDriver driver;
public LoginPage(WebDriver driver) {
this.driver = driver;
}

public void login(String user, String password) {
// driver.doStuff()
}
}

关于java - Selenium 结构化模式java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21143952/

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