我在.properties
的Selenium webdriver中使用@FindBy()
文件作为对象存储库。
我收到错误,因为@FindBy
需要一个常量值来初始化。
有没有办法让.properties
文件编译工作?
代码段:
public class LoginPageID {
@FindBy(id=ObjectConstants.LOGINID)
public WebElement LoginID;
}
public class ObjectConstants {
public static final String LOGINID;
static {
Properties p = new Properties();
try {
p.load(new FileInputStream("constants.properties"));
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
LOGINID = p.getProperty("LOGINID");
}
}
答案 0 :(得分:1)
这种技巧在Java中是不可能的。您的常量值仅在运行时首次jetty-alpn-agent-2.0.0.jar
访问时可用。这就是IDE向您报告错误的原因。
我明白了,这对我来说似乎很现实。但... 这个特殊情况下的主要挑战与第三方(WebDriver)有关,你无法轻易重新定义。
所以从技术上讲,你必须创建自己的注释,理想情况下会使用参数化的枚举值。例如:
ObjectConstants
然后你需要一个自定义工厂来进行枚举值提取,代理字段或你将使用的任何方法。