Selenium Webdriver中的方法(测试用例)问题

时间:2014-04-07 11:21:13

标签: selenium selenium-webdriver testng

我是Selenium的新手,在练习时我提出了一个问题,我正在测试我自己的应用程序,它已部署在tomcat服务器中。因此,在打开我的应用程序后,我正在一种方法中测试验证并在一种方法中更改页面。现在我的观点是我在同一页面上同时测试我的两种方法。

为什么我需要在两种方法中编写相同的代码,

 driver.get("http://localhost:8070/");
 driver.findElement(By.xpath("//div[@id='actions']/div[2]/a/span")).click();
 driver.findElement(By.linkText("/ReportGenerator")).click();

如何直接执行操作,如果我在第二种方法中删除了上面的两行,它就会失败。怎么解决这个问题?

 @Test
        public void analysisValidation()
        {
            driver.get("http://localhost:8070/");
            driver.findElement(By.xpath("//div[@id='actions']/div[2]/a/span")).click();
            driver.findElement(By.linkText("/ReportGenerator")).click();
            driver.findElement(By.id("Analysis")).click();
            WebElement webElement = driver.findElement(By.id("modelForm.errors"));
            String alertMsg = webElement.getText();
            System.out.println(alertMsg);
            Assert.assertEquals("Please select a Survey Id to perform Aggregate Analysis", alertMsg); 

        }

        @Test
        public void testAnalysisPage()
        {
                driver.get("http://localhost:8070/");
                driver.findElement(By.xpath("//div[@id='actions']/div[2]/a/span")).click();
                driver.findElement(By.linkText("/ReportGenerator")).click();
                new Select(driver.findElement(By.id("surveyId"))).selectByVisibleText("Apollo");
                driver.findElement(By.id("Analysis")).click();
                System.out.println(driver.getTitle());
                String pageTitle = driver.getTitle();
                Assert.assertEquals("My JSP 'analysis.jsp' starting page", pageTitle);
        }

1 个答案:

答案 0 :(得分:1)

  

如何直接执行操作,如果我删除上面的两行   我的第二种方法失败了。如何解决这个问题

测试失败,因为每个@Test测试都是独立执行的。您需要删除的代码才能初始化驱动程序并加载页面。

您可以按照以下方式解决此问题:

  • 使用setUp()注释创建一个函数@beforemethod。使用驱动程序初始化和加载页面调用填充它。
  • 使用teardown()注释创建一个函数@AfterMethod。使用驱动程序清理调用填充它。

例如,这里有一些伪代码(根据品味修改此

@BeforeMethod
public void setUp() throws Exception {
        driver.get("http://localhost:8070/");
        driver.findElement(By.xpath("//div[@id='actions']/div[2]/a/span")).click();
        driver.findElement(By.linkText("/ReportGenerator")).click();
}

@AfterMethod
public void teardown() throws Exception {
        driver.quit()
}

@BeforeMethod和@AfterMethod注释的优点是代码将在每个@Test方法执行之前/之后运行因此,您可以避免重复代码。