2017-10-19 10 views
1

自分のロケータの定義全体をstandart形式からPOMを使った注釈FindsByに変換しようとしていました。しかし、私はいくつかのロケータを持っています。これらのロケータは非静的変数で構成されています。エラーメッセージ "静的コンテキストでは非静的フィールド_createBookDataにアクセスできません"。私が取得したいアノテーションで非静的な値を使用する方法FindsBy?

コード:

[FindsBy(How = How.CssSelector, Using ="#select-month > option:nth-child(" + _createBookData.NumberMonth + ")") ] private IWebElement BirthmonthDropItem; 

代わりにこのコードの:

private IWebElement BirthmonthDropItem 
    {    
     get 
     { 
      return _waitDriver.Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("#select-month > option:nth-child(" + _createBookData.NumberMonth + ")"))); 
     } 
    } 

答えて

0

あなたがこれを行うことはできません。属性は実行時ではなくコンパイル時に完全に定義する必要があります。これはC#言語の仕組みに過ぎません。これは設計によるものです。属性でこれを行うための回避策はありません。幸いにも、Page Object ModelはPageFactory実装の使用に依存しません。 PageFactoryを使用すると、Page Objectを取り込む他の方法よりも優れた利点はありません。

関連する問題