내 테스트 프레임 워크는 셀레늄의 PageFactory와 Lambok을 사용합니다. 테스트 플로우가 실행되는 동안 나타나는 모든 웹 요소를 캡처하는 측면을 작성하고자합니다.AspectJ - @FindBy로 주석 된 모든 WebElements를 포착하기위한 포인트 컷
@Slf4j
public class MyCustomPage {
@Inject
private IWebDriverSet driverSet;
@Getter
@FindBy(id = PAGE_ROOT)
private WebElement root;
@FindAll({
@FindBy(css = FOOT_BAR),
@FindBy(css = FOOT_BAR_B)
})
private WebElement navBar;
}
@FindBy과 함께 거래를 테스트하는 webelement을 결정처럼
전형적인 페이지가 보인다. 50 페이지가 있습니다.
페이지가 PageFactory를 사용하여 인스턴스화 될 때 webElement 필드가 인스턴스화됩니다 (@FindBy의 값에 해당하는 WebElement 인스턴스로 지정됨).
@ FindBy/@ FindAll을 인스턴스화하자 마자 이러한 webElements를 캡처하고 싶습니다. 모든 페이지 클래스에 대해 별도의 pointcut을 작성하고 싶지 않습니다. 어떻게 그럴 수 있습니까?
IMO는 그것을 수행하는 셀레늄 방식이 아니며 단지 오래된 자바 리플렉션 만 사용합니다. 그렇다면 분석 할 클래스 목록을 전달해야합니다. 또는 FindBy를 다시 작성하여 로그인 할 수 있습니다. –
"캡처"란 무엇을 의미합니까? 그냥 로깅? DefaultFieldDecorator를 확장하고 decorate() 메서드에 코드를 추가 할 수 있습니다. 그런 다음 새 Decorator 클래스를 PageFactory static initElements (FieldDecorator 데코레이터, java.lang.Object 페이지) 메서드에 전달하여 page 객체를 초기화합니다. 이 코드는 findby 주석을 사용하여 각 web 요소에 대해 실행해야합니다. – Grasshopper