要素がなくなるまで待ちたい

最近は画面遷移が行われないSPA(Single Page Application)が増えてきた気がしますが、画面遷移やSPAにおけるモーダル表示など、画面に要素が表示されたり消えたりするタイミングで、テストが不安定になりがちです。

最近は画面遷移が行われないSPA(Single Page Application)が増えてきた気がしますが、画面遷移やSPAにおけるモーダル表示など、画面に要素が表示されたり消えたりするタイミングで、テストが不安定になりがちです。

そのため、SeleniumだとImplicitly wait(明示的な待ち時間)で画面がロードされるのを待たせられますが、mablだと「Wait untilステップ」で「要素が表示されるまで待つ」ことができます。

参考: Adding wait and wait until steps

mablへの要望リストにも届いているのですが、「要素がなくなるまで待つ」は、mablでもまだできません。

代替案として、以下の2つがあります。

1. JS snippet を使う

あるテストで読込中のぐるぐるマークボタンが消えるまで待ちたいケースがあったため、以下のようなJS snippetを作成してみました。

参考: waitUntilLoadingImageDisappers

2. Xpath検索を使う

手元ではうまく待ちが効いているようなのでXpathを使った手段もご紹介です。

mablトレーナーでXpath検索をさせ、「IF count of all elements matching xpath "//button[@disabled]" equals 0」のようにIF文を入れます。

Xpath検索ではSeleniumのような待ちが固定秒数発生するようなので、「要素がなくなる = 要素が0になる」まで待たせるような処理にしています。