我最近开始在页面对象模式中使用Selenium2 与Page Factory合作。我声明了WebElements @FindBy由PageFactory初始化的注释 class已初始化。但是我想使用@FindBy 使用locators.properties文件的注释。不幸的是我似乎没有 能够这样做,因为注释仅限于允许 常数表达式。这似乎是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);
}
}
答案 0 :(得分:0)
你现在不能。
您总是可以编写一种方法来将其作为补丁提供,然后将其应用到Selenium代码库中:)
答案 1 :(得分:0)
这是可能的,这个链接确实有用Selenium Page Object Reuse se
我已经设法从配置中读取定位器,请看一下 Selenium Page Object. How to read @FindBy locator from external source?