selenium-webdriver
Korzystanie z adnotacji @FindBy w Javie
Szukaj…
Składnia
- CLASS_NAME: @FindBy (className = "classname")
- CSS: @FindBy (css = "css")
- ID: @FindBy (id = "id")
- ID_OR_NAME: @FindBy (how = How.ID_OR_NAME, using = "idOrName")
- LINK_TEXT: @FindBy (linkText = „text”)
- NAZWA: @FindBy (name = "name")
- PARTIAL_LINK_TEXT: @FindBy (niepełnyLinkText = „tekst”)
- TAG_NAME: @FindBy (tagName = "zmienna")
- XPATH: @FindBy (xpath = "xpath")
Uwagi
Uwaga: istnieją dwa sposoby wykorzystania adnotacji. Przykłady:
@FindBy(id = "id")
i
@FindBy(how = How.ID, using ="id")
są równe i oba szukają elementu według jego identyfikatora. W przypadku ID_OR_NAME
możesz tylko użyć
@FindBy(how = How.ID_OR_NAME, using ="idOrName")
PageFactory.initElements()
należy użyć po utworzeniu wystąpienia obiektu strony, aby znaleźć elementy oznaczone adnotacją @FindBy
.
Podstawowy przykład
Załóżmy, że korzystamy z modelu obiektowego strony . Klasa obiektu strony:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
public class LoginPage {
@FindBy(id="loginInput") //method used to find WebElement, in that case Id
WebElement loginTextbox;
@FindBy(id="passwordInput")
WebElement passwordTextBox;
//xpath example:
@FindBy(xpath="//form[@id='loginForm']/button(contains(., 'Login')")
WebElement loginButton;
public void login(String username, String password){
// login method prepared according to Page Object Pattern
loginTextbox.sendKeys(username);
passwordTextBox.sendKeys(password);
loginButton.click();
// because WebElements were declared with @FindBy, we can use them without
// driver.find() method
}
}
I klasa testów:
class Tests{
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
LoginPage loginPage = new LoginPage();
//PageFactory is used to find elements with @FindBy specified
PageFactory.initElements(driver, loginPage);
loginPage.login("user", "pass");
}
}
Istnieje kilka metod wyszukiwania elementów WebElements przy użyciu @FindBy - sprawdź sekcję Składnia.
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow