如何为@FindBy常量编译.properties文件编译时间

时间:2017-08-11 08:47:22

标签: java selenium annotations webdriver

我在.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"); 
    } 
}

1 个答案:

答案 0 :(得分:1)

这种技巧在Java中是不可能的。您的常量值仅在运行时首次jetty-alpn-agent-2.0.0.jar访问时可用。这就是IDE向您报告错误的原因。

我明白了,这对我来说似乎很现实。但... 这个特殊情况下的主要挑战与第三方(WebDriver)有关,你无法轻易重新定义。

所以从技术上讲,你必须创建自己的注释,理想情况下会使用参数化的枚举值。例如:

ObjectConstants

然后你需要一个自定义工厂来进行枚举值提取,代理字段或你将使用的任何方法。