我是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);
}
答案 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方法执行之前/之后运行。因此,您可以避免重复代码。