使用数据提供程序时如何在测试后重新启动浏览器

时间:2018-07-09 14:59:44

标签: java selenium user-interface testing automated-tests

我当前正在使用数据提供程序来输入许多不同的用户,但是当测试结束时,仍然有前一个用户登录时,如何在每次运行后重置Bowser?这是我的代码:

public class login_from_login_page extends ConditionsWebDriverFactory {

    public static final int TEST_CASE_PASSED_STATUS = 1;
    public static final int TEST_CASE_FAILED_STATUS = 5;


    @Test(dataProviderClass = Data.DataProviders.class, dataProvider = "customer")
    public void LoginActionTest (String pass, String email, String user) throws Exception{

        Header header = new Header();
        header.guest_select_login();
        Pages.Login login = new Pages.Login();
        login.LoginAction(pass, email, user);


        //TestRail.addResultForTestCase("16870",TEST_CASE_PASSED_STATUS," ");
        //TestRail.addResultForTestCase("16874",TEST_CASE_PASSED_STATUS," ");
        //TestRail.addResultForTestCase("17199",TEST_CASE_PASSED_STATUS," ");
    }
}

我有一个Webdriverfactory类,它是从我的测试类扩展而来的,但是它似乎并没有创建新的实例,当它使用新的DataProvider信息重新启动时,我始终始终会登录。

@Listeners({ScreenShotOnFailListener.class})

public class ConditionsWebDriverFactory {

    @BeforeClass
    public void beforeTest() {
        Drivers.startBrowser(true);
        Drivers.getDriver().manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
    }

    @AfterClass (alwaysRun = true)
    public void afterTest() {
        Drivers.finishBrowser();
    }
}

2 个答案:

答案 0 :(得分:1)

在执行测试之前通过初始化开始测试:

@BeforeMethod
void setupTest() {
  WebDriver driver = new ChromDriver();
  // method code here
}

或者使用新的驱动程序实例初始化页面对象:

Pages.Login login = new Pages.Login(new ChromDriver());

另一种选择:

@Test
void seleniumTest() {
  // Test code here
  login.getDriver().manage().deleteAllCookies();
  login.getDriver().navigate.refresh();
}

答案 1 :(得分:0)

如果使用testng,则可以在方法之后添加:

   @AfterMethod
void deleteCoockies() {
  Drivers.getDriver().manage().deleteAllCookies();
  Drivers.getDriver().get ("homePageUrl");
}