Qualcuno può spiegarmi di Annotazione @FindBy
in WebDriver
?Qual è l'uso di Annotazione "@FindBy"?
Dove e perché viene utilizzato?
Qualcuno può spiegarmi di Annotazione @FindBy
in WebDriver
?Qual è l'uso di Annotazione "@FindBy"?
Dove e perché viene utilizzato?
Posso citare API-documentation?
Usato per contrassegnare un campo in una pagina oggetto per indicare un meccanismo alternativo per localizzare l'elemento o un elenco di elementi. Utilizzato in combinazione con
PageFactory#proxyElement
consente agli utenti di creare in modo rapido e semplice PageObjects.
Quindi, se si utilizza PageObject
modello allora si aggiunge questa annotazione per i membri della classe e WebDriver
iniettare automaticamente adeguati WebElement
s ad esso durante l'inizializzazione dell'oggetto (quando PageFactory.initElements()
chiamato).
Consiglio vivamente di seguire questo collegamento e di leggere su PageObject
pattern and @FindBy
annotations usage con altri esempi.
E 'per aiutare con la costruzione di indicatori di posizione quando si utilizza la pagina di fabbrica per sostenere il vostro pagina Oggetti
Comunque sto scoprendo che trovo più utile per memorizzare i localizzatori come da oggetti piuttosto di WebElements in quanto sono più flessibili e si tende a evitare di incorrere in StaleElementException.
By myLocator = By.id("idOfYourElement")
invece di
@FindBy(id = "idOfYourElement")
WebElement myLocator;
In questo modo è anche possibile utilizzare i localizzatori quando affermando l'assenza di un elemento o usarlo nelle ExpectedConditions aiutanti.
Ho molti problemi a capire perché qualcuno userebbe @FindBy invece di By objects. – stuart
@elroso Posso usare il metodo PageFactory.initElements (driver, pagina) quando rimuovi le annotazioni? Grazie –
Una buona spiegazione dell'uso di By piuttosto che di @FindBy. Grazie :) –
È inoltre possibile utilizzare Pagefactory, e avere qualcosa di simile:.
@FindBy(how = How.NAME, using = "logonName")
private WebElement logonNameField;
@FindBy(how = How.NAME, using = "password")
private WebElement passwordField;
Ora, come per Come, si può avere:
Oppure si può utilizzare il proprio DOM ricerca più XPath, che sarebbe al di fuori della WebDriver API, ma dovrebbe funzionare.
Grazie per la risposta. Quindi, ho un'altra domanda ... sarà usata per gli elementi che cambiano i loro locatori in modo dinamico? – mra419
@ user1163375 Che cosa intendi dicendo "cambiando i loro locatori in modo dinamico?" –
La mia comprensione è "@FindBy" L'annotazione viene utilizzata quando gli ID degli elementi cambiano dinamicamente nell'applicazione Web .... Correggimi se sbaglio. – mra419