@FindBy は WebElement だけでなく、自分のクラスでも使用できますか?
ページ要素と連携し、その中の WebElement インターフェイスのいくつかのメソッドをオーバーライドするためのクラスが必要です。
だから私はクラスを実装しました:
public class NamedElement implements WebElement {
public boolean isDisplayed(){
try{
return element.isDisplayed();
} catch (NoSuchElementException noElement) {
return false;
}
}
そして、次のように要素を宣言したいと思います:
@FindBy(xpath = ".//a[contains(text(), 'Log in')]")
public NamedElement loginButton;
しかし、私はエラーが発生します:
java.lang.IllegalArgumentException: Can not set lenovo.tests.page.NamedElement field lenovo.tests.page.NCBLoginPage.loginButton to com.sun.proxy.$Proxy9
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)
at java.lang.reflect.Field.set(Field.java:764)
at org.openqa.selenium.support.PageFactory.proxyFields(PageFactory.java:116)
at org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:104)
at org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:91)
at org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:78)
at org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:64)
at lenovo.tests.step.NCBLoginStep.<init>(NCBLoginStep.java:20)
WebElement メソッドをオーバーライドし、代わりに .isDispalyed() メソッドを使用する適切な方法を教えてください。@FindBy アノテーションを引き続き使用したいと思います。