誰かが注釈について私に説明できますか@FindBy
in WebDriver
?
どこで、なぜ使用されるのですか?
ページファクトリを使用してページオブジェクトをサポートするときに、ロケーターの構築を支援することです。
ただし、ロケーターは柔軟性が高く、StaleElementExceptionに遭遇することを回避する傾向があるため、WebElementsではなくByオブジェクトとしてロケーターを格納する方が便利であることがわかりました。
By myLocator = By.id("idOfYourElement")
の代わりに
@FindBy(id = "idOfYourElement")
WebElement myLocator;
このようにして、要素がないことを表明するときにロケーターを使用したり、ExpectedConditionsヘルパーで使用したりすることもできます。
引用できますか API-documentation ?
ページオブジェクトのフィールドをマークして、要素を見つけるための代替メカニズムまたは要素のリストを示すために使用されます。 _
PageFactory#proxyElement
_と組み合わせて使用すると、ユーザーはPageObjectをすばやく簡単に作成できます。
したがって、PageObject
パターンを使用する場合は、このアノテーションをクラスメンバーに追加し、オブジェクトの初期化中にWebDriver
が適切なWebElement
sを自動的に挿入します(PageFactory.initElements()
の場合)。と呼ばれる)。
このリンクをたどって、 PageObject
パターンと_@FindBy
_アノテーションの使用法 についてさらに例を読むことを強くお勧めします。
Pagefactory を使用して、次のようにすることもできます。
@FindBy(how = How.NAME, using = "logonName")
private WebElement logonNameField;
@FindBy(how = How.NAME, using = "password")
private WebElement passwordField;
さて、How。に関しては、次のことができます。
または、独自のDOM SearchとXpathを使用することもできます。これは、WebDriver APIの外部にありますが、機能するはずです。
PageFactoryクラスの助けを借りて、アノテーションを使用します@FindBy
WebElementsを検索します。 initElementsメソッドを使用してWeb要素を初期化します。 @FindBy
は、tagName、partialLinkText、name、linkText、id、css、className、xpathを属性として受け入れることができます。
@FindBy
アノテーションは、単一の基準を使用して1つ以上のWebElementを検索します。たとえば、同じクラス属性を持つすべての要素を識別するために、次の識別を使用できます。
@FindBy(how = How.CLASS_NAME, using = "classname")
private List<WebElement> singlecriterion;`enter code here`