私は最近、ページ ファクトリと組み合わせて、ページ オブジェクト パターンで Selenium2 を使い始めました。クラスの初期化時に PageFactory によって初期化される @FindBy アノテーションで宣言された WebElements があります。ただし、locators.properties ファイルで @FindBy アノテーションを使用したいと考えています。残念ながら、注釈は定数式のみを許可するように制限されているため、これを行うことができないようです。これは一般的に Java アノテーションの制限のようですが、誰かがこれに対する回避策を見つけたのではないかと思っています。外部ソースからロケーターをロードしたいのですが、そうすると PageFactory を使用する利点が失われます。
public class LoginPage {
protected WebDriver driver;
@FindBy(id = "username")
private WebElement usernameField;
@FindBy(id = "password")
private WebElement passwordField;
@FindBy(id = "button_login")
private WebElement loginButton;
public LoginPage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
}
これに似たものを実装したいのですが、注釈がこれを許可しないためできません:
public class LoginPage {
protected WebDriver driver;
Properties locators = new Properties();
@FindBy(id = locators.getProperty("login.usernameField"))
private WebElement usernameField;
@FindBy(id = locators.getProperty("login.passwordField"))
private WebElement passwordField;
@FindBy(id = locators.getProperty("login.loginButton"))
private WebElement loginButton;
public LoginPage(WebDriver driver) {
this.driver = driver;
// Load the locators.properties File here
PageFactory.initElements(driver, this);
}
}