【发布时间】:2012-04-10 19:51:41
【问题描述】:
我一直在为 Web 应用程序编写 Selenium 测试,如果出现内部服务器错误,应用程序中似乎有多个内部服务器错误实例,应用程序显示自定义错误页面,并且错误 ID 显示给用户以寻求技术问题团队,以防用户遇到它。
这使得在 Selenium 执行期间调试测试失败有点费力。 我正在考虑使用某种机制在测试中执行的每个步骤继续轮询页面,以查找是否存在内部服务器错误的任何实例,这是当我遇到 Junit Rule 并考虑为其编写自定义注释时,一些像 -
public class SelTestCase {
protected WebDriver driver;
@Before
public void startDriver() {
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://www.google.com/");
}
@After
public void closeDriver() {
driver.quit();
}
}
public class GoogleSearchTest extends SelTestCase {
@Rule
PageChecker pageChecker = new PageChecker();
@Test
@CheckPage
public void testGoogleSearch() {
GoogleHomePage googleHomePage = PageFactory.initElements(driver,
GoogleHomePage.class);
googleHomePage.searchGoogle("Selenium HQ");
assert driver.getPageSource().contains("seleniumhq") : "Selenium headquarter search failed";
}
}
SelTestCase 类创建 WebDriver 的实例来执行测试,这里是 PageChecker 类 -
public class PageChecker extends SelTestCase {
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface CheckPage {
// page check should take place here (Though not sure if it is right place)
// like if(driver.getPageSource.contains("Internal Server Error") {throw Exception ("Err")}
}
}
这就是我遇到的问题,我该如何进行 CheckPage 注释?
【问题讨论】: