웹 응용 프로그램 용 Selenium 테스트를 작성했으며 내부 서버 오류의 경우 응용 프로그램에 내부 서버 오류의 여러 인스턴스가있는 것 같습니다. 응용 프로그램에 사용자 정의 오류 페이지가 표시되고 사용자에게 오류 ID가 표시됩니다. 기술 팀이 사용자와 마주 치면 문제를 해결하십시오.프로그래밍 방식으로 페이지 상태 확인
이렇게하면 Selenium 실행 중에 테스트 실패를 디버깅하는 데 약간의 어려움이 있습니다. 내부 서버 오류의 인스턴스가 있는지를 찾기 위해 테스트에서 실행 된 각 단계마다 페이지를 폴링 (polling)하는 메커니즘을 사용하려고 생각했습니다. 그리고 이것이 내가 Junit 규칙을 보았을 때 사용자 지정 주석을 작성하려고 할 때입니다. 같은 몇 가지 -
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의 annonations으로 어떻게 진행합니까, 함께 붙어있는 무슨이다 -
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
클래스 ?
이 내가 찾던 가깝지만 작동하지 않았다. 드라이버 인스턴스를 생성하고 소멸시키는'SelTestCase' 클래스의 구현을 포함하도록 질문을 수정했습니다. 나는 시간 컨트롤이'notValid' 메소드에 도달했다는 것을 알아 차렸다. 드라이버는 파괴되고 널 포인터 예외가 발생한다. 테스트 메소드에서 각 명령문 다음에'verify' 메소드가 실행될 것이라고 가정하고 있습니다. – Tarun