2017-08-11 6 views
0

@FindBy()にSelenium webdriverのオブジェクトリポジトリのファイル.propertiesを使用しています。@FindBy定数の.propertiesファイルのコンパイル方法

@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

このようなトリックは、Javaで可能ではありません。あなたの定数の値は、最初にObjectConstantsアクセス時に実行時にのみ利用できます。だからこそIDEはあなたにエラーを報告します。

私はあなたのアイデアを得ました。それは私にとって現実的なようです。しかし... この場合の主な課題は、サードパーティ(WebDriver)に関連しており、簡単に再定義することはできません。

技術的には、独自のアノテーションを作成する必要があります。アノテーションは、理想的にはパラメータ化された列挙型の値を消費します。たとえば、:

次に、列挙値の抽出、フィールドのプロキシなど、使用するカスタムのファクトリが必要になります。

関連する問題