1
ユーザーが検索ボタンを押した後に検索結果が表示される表を含む検索ページがあります。ページオブジェクトは、検索結果テーブルの行をカスタムHtmlElement
クラスにラップします。古い要素をリフレッシュすることはできますか?
結果テーブルにアクセスすると、古くなった要素の例外が発生します。これは、ajaxリクエストによってリフレッシュされたためです。
私は、検索を実行した後にページオブジェクトの新しいインスタンスを返すことで回避しましたが、検索結果フィールドを再作成したいだけです。これを行う方法はありますか?
例:
@FindBy(css = "[data-viewid='Table1'] .dojoxGridRow")
List<ActivityPerformanceRow> results;
// ...
public void search() {
search.click()
waitForAjaxToComplete();
// If it was a standard WebElement list I'd do something like this:
results = driver.findElements(By.cssSelector(
"[data-viewid='Table1'] .dojoxGridRow"));
}
PageObjectを初期化するときに使用する要素ロケータはどれですか?デフォルトではAjaxElementLocatorが使用されていますので、古い要素の問題はすべての要素アクセスで要素検索を実行しません。 – artkoshelev