selenium-webdriver
Javaで@FindByアノテーションを使用する
サーチ…
構文
- CLASS_NAME:@FindBy(className = "classname")
- CSS:@FindBy(css = "css")
- ID:@FindBy(id = "id")
- ID_OR_NAME:@FindBy(how = ID_OR_NAME、= "idOrName"を使用)
- LINK_TEXT:@FindBy(linkText = "text")
- NAME:@FindBy(name = "name")
- PARTIAL_LINK_TEXT:@FindBy(partialLinkText = "text")
- TAG_NAME:@FindBy(tagName = "tagname")
- XPATH:@FindBy(xpath = "xpath")
備考
注釈を使用するには2つの方法があることに注意してください。例:
@FindBy(id = "id")
そして
@FindBy(how = How.ID, using ="id")
が等しく、両方ともそのIDによって要素を探す。 ID_OR_NAME
場合は、
@FindBy(how = How.ID_OR_NAME, using ="idOrName")
@FindBy
アノテーションでマークされた要素を見つけるには、 PageFactory.initElements()
をページオブジェクトのインスタンス化の後に使用する必要があります。
基本的な例
Pageオブジェクトモデルを使用していると仮定します 。ページオブジェクトクラス:
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
}
}
そしてテストクラス:
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");
}
}
@FindBy - check構文セクションを使用してWebElementsを見つける方法はほとんどありません。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow