使用TestNG,打开两个URL,而不是一个

时间:2018-07-07 11:07:55

标签: testng

使用TestNG,有两种方法,第一种方法具有无效的凭据,但第二种方法是有效的。关注的是首先打开URL并添加了无效的凭据,然后再次打开URL并添加了有效的详细信息。为什么网址打开两次。

@Test(priority = 0)
public void one() {
    driver.findElement(By.xpath(".//*[@id='user_login']")).sendKeys("In Valid email");
    driver.findElement(By.xpath(".//*[@id='user_login_password']")).sendKeys("InValid password");
}

@Test(priority = 1)
public void two() {
    driver.findElement(By.xpath(".//*[@id='user_login']")).sendKeys("Valid");
    driver.findElement(By.xpath(".//*[@id='user_login_password']")).sendKeys("Valid");
}

@BeforeMethod
public void beforeMethod() {
    // Create a new instance of the Firefox driver
    driver = new FirefoxDriver();
    //Put a Implicit wait, this means that any search for elements on the page could take the time the implicit wait is set for before throwing exception
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    //Launch the Online Store Website
    driver.get("URL");
}

@AfterMethod
public void afterMethod() {
    // Close the driver
    driver.quit();
}

2 个答案:

答案 0 :(得分:1)

@BeforeMethod将在类中定义的每个@Test方法之前调用,因此,如您在代码中所见,有2个@Test批注分别为“ void one()”和“ void two()”。您的URL将打开并传递void one()方法的密钥,浏览器将按照@AfterMethod注释关闭。

在每次@Test执行之前调用@BeforeMethod,类似地,@AfterMethod将在每次@Test执行之后调用。

要一次性执行它,您必须使用 @BeforeClass 批注,这样它将一次性调用,您将获得所需的结果。与要在执行结束后关闭浏览器类似,您可以使用 @AfterClass 注释对其进行定义。

答案 1 :(得分:0)

您正在运行的2个方法,但是都正在初始化@BeforeMethod。这将两次打开UR1。而是运行@Before测试方法