はじめに
E2Eテスト自動化をした際に、新規windowが開くようなサイトで新規windowにフォーカスが移らずエラーになる事が何度かあったので、その際に安定化させるためにやった事を備忘録として残しておく。
- java : 8以上
新規に開くwindowにフォーカスを切り替える
SwitchWindowSample.java
public HogePage openWindow(){
Set<String> beforeHandles = WebDriverRunner.getWebDriver().getHandles();
Selenide.$("#btn").click();
Selenide.sleep(500); // 安定させるためにどうしても明示的にsleepを入れたりしないとダメな事もある
Set<String> afterHandles = WebDriverRunner.getWebDriver().getHandles();
afterHandles.removeAll(beforeHandles); // Setの中身から新規windowのhandleを取得するために被っているhandleは削除
String handle = afterHandles.stream().findFirst().get();
Selenide.switchTo().window(handle); // ここで明示的にwindowを切り替える
return Selenide.open(HogePage.class);
}
※上記ではわざとSelenide.
としているが普通はimport
で書いてきれいにするのがいいと思われる。
参考文献