我试图找到一种关闭弹出窗口的方法,即使断言失败,所以我的下一个测试可以从"主页"继续,换句话说,我在哪里离开了。
这是工作流程: 主页 - >弹出窗口(带有下面的断言和driver.close) - >主页
目前,如果断言失败,弹出窗口仍然打开,下一个测试无法找到需要与之交互的元素,因为该元素位于"主页面上。我愿意接受建议。我的目标是提供准确的测试结果,以避免误报是我使用断言的总体原因。
如果断言失败,如何在测试方法结束时放置断言,但仍然可以完成其余步骤。
我的示例代码:
try{
WebDriverWait wait = new WebDriverWait(driver,5);
WebElement Reportrunningalready = wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("btn")));
System.out.println("Button found. Clicking it now.");
driver.findElement(By.name("btn")).click(); }
catch(Throwable e){
System.err.println("Button not found within the time.");
Assert.assertTrue(driver.getPageSource().contains("Your Report is complete."));
driver.close();
// change focus back to old tab
driver.switchTo().window(oldTab);
Thread.sleep(3000);
}
旁注:我意识到getPageSource
不是最好的方法,但弹出字体在字体上有5-10个单词,所以它并不是那么详尽。
我使用TestNG
作为我的框架,Java
作为我的语言,Webdriver2
作为我的Selenium测试工具。
谢谢!
答案 0 :(得分:1)
提出的建议都不是一个干净的解决方案:
finally
是关于使用语言构造而不是正确的单元测试机制 正确的解决方案是清理单元测试框架生命周期方法中的资源(在TestNG @AfterMethod
或类似的注释中)
答案 1 :(得分:0)
您可以使用softAssertion,请参阅此帖子以获取更多信息
http://seleniumexamples.com/blog/guide/using-soft-assertions-in-testng/
要继续测试,您应该有恢复机制/初始化步骤(例如:返回登录页面)