サーチ…


構文

  • 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