3

現在、私が作業しているアプリケーションには、次々と新しいウィンドウを開く多くのワークフローがあります。次の方法を使用して、フォーカスを新しいウィンドウに切り替えました。

for (String popUpHandle : driver.getWindowHandles()) {
driver.switchTo().window(popUpHandle);
if(driver.getCurrentUrl().equalsIgnoreCase(URL of the new window)
...
}

同じように、ページタイトルと一緒に使用しました。selenium.isElementPresent presentを使用して、条件の内部に入り、新しいウィンドウで特定の操作を実行しました。

上記の3つのソリューションは正常に機能しますが、IEでは1つのワークフローで2〜3個のウィンドウが非表示のままになると時間がかかりすぎます。

リンクまたはボタンをクリックした後、新しいウィンドウを開くとすぐにフォーカスを切り替えるためのガイダンスをいただければ幸いです。

4

1 に答える 1

5

少し高速化するための 1 つのトリックは、常に親ウィンドウを無視することです。したがって、次のようにします。

//before any pop ups are open
String parentHandle = driver.getWindowHandle();

//after you have pop ups
for (String popUpHandle : driver.getWindowHandles()) {
  if(!popUpHandle.equals(parentHandle)){
    driver.switchTo().window(popUpHandle);
    if(driver.getCurrentUrl().equalsIgnoreCase(URL of the new window)){
      //do something here
    }
  }
}

コレクションを順序付けする必要があるため、この方法で最近開いたウィンドウに切り替えることもできます (* 現時点では、テストするためにセットアップされた Selenium にアクセスできないと思います *):

String newWindowHandle = driver.getWindowHandles()[driver.getWindowHandles().length - 1];
driver.switchTo().window(newWindowHandle);

最後に、使用している Selenium のバージョンが不明ですが、最新の IEDriver の方が大幅に高速です: http://code.google.com/p/selenium/wiki/InternetExplorerDriver

于 2012-08-14T04:03:06.873 に答える