Selenium Webdriver:需要解决与@BeforeTest (TestNG) 有关的非常具体的问题

Selenium Webdriver: Need solution for a very specific issue pertaining to @BeforeTest (TestNG)

新用户提醒

使用 Java、webdriver 和 TestNG

我有两种不同的方法 1. 用于启动驱动程序 2. 登录

我在@BeforeTest 中调用了驱动程序启动方法,这也会启动应用程序登录页面。 我还想在@BeforeTest 中调用 'login' 方法(因为几乎所有的测试都需要这个方法)但问题是我还对这个登录页面进行了 4-5 次测试(比如测试版本、版权、忘记了密码 link)。因此,对于这些测试,不需要登录(或者说登录不应该发生)。

有没有一种方法可以在与登录页面相关的测试之前执行一组方法调用,并在所有其他测试之前执行一组不同的方法调用。 如果有其他方法可以实现,请告诉我。

如果此处需要更多信息,请告诉我。

我会创建一个 base-class,我将 @BeforeTest 方法与登录放在一起,只让需要登录的测试classes 继承它:

public abstract class TestBaseForLogin{

    @BeforeTest
    public void loginBeforeEachTest() {
        // do the login
    }
}

现在,如果您想要在每次测试之前合并需要登录的测试,那么只需继承基础class。

public class TestThatNeedLogin extends TestBaseForLogin{

    @BeforeTest
    public void beforeEachTest() {
        // do whatever you need before the test
    }   
}

否则就不用底座class(或另一个底座class)

public class TestLogin {

    @BeforeTest
    public void beforeEachTest() {
        // do whatever you need before the test
    } 

}

您继承的 classes 将首先执行基础 class 的 @BeforeTest,然后才执行它们自己的 @BeforeTest 标记方法。