現在、私は相対的に小さなGWTアプリケーションを開発しており、私はSeleniumでGUIをテストしています。ユーザーがボタンの上にカスタムダイアログボックスをクリックした場合、私のアプリケーションでJava/Selenium IDによる要素の検索 - Annotation上でSeleniumがループしていますか?
public class DummyPage
{
@FindBy(id = ID_SEARCH_BTN)
private WebElement btnSearch;
@FindBy(id = ID_CANCEL_BTN_CLEAR)
private WebElement btnClear;
...
public DummyPage()
{
eventFiringDriver = DriverFactory.getInstance().getEventFiringDriver();
PageFactory.initElements(eventFiringDriver, this);
}
WebDriverWait webDriverWait = new WebDriverWait(eventFiringDriver, 20);
wait = webDriverWait.ignoring(StaleElementReferenceException.class);
}
:すべてが正常に動作しますが、私は私の頭の中でポップアップ質問私のテストを書いていた一方で:私のDummyPageで
を私は次のようにしますこのDialogBoxはボタンのclickHandlerに組み込まれているため、ページには存在しません。私は自分のカスタムDialogBoxのボタンをIDに渡してテストページに配置しました。 ?その作成時、またはWebElementがフェッチされる
@FindBy(id = DIALOGBOX_YES_BTN)
private WebElement dialogBoxYesBtn;
オブジェクトがnullになります:私はによってダイアログボックスのボタンを見つけるためにしようとした場合
私の質問はありますか? Seleniumは@FindBy
注釈でループしており、それらを解決しようとしていますか?
現時点で私は最初のボタンをクリックして同じテストを行っていますが、そのIDでDialogBoxButtonを見つけようとしていますが、動作していますが、すべてのWebElementsをページオブジェクト
ご協力いただきありがとうございます。
はい、ページオブジェクトに追加できます。キャッシュされた注釈が使用されている場合を除いて、オブジェクトに対してアクションを実行するたびにオブジェクトが取得されます。 – Murthi
IMOでは、 'PageObject'を' PageObject'から(ページ内で)初期化する考えは良い考えではないかもしれません。あなたの質問によると、「ユーザーがボタンをクリックするとカスタムダイアログボックスが表示される」とは、基本的に、 'カスタムダイアログボックス'が 'HTML DOM'の一部であることを意味し、同じ' PageObject'からそれを処理できるはずです。 – DebanjanB