2

Chrome ブラウザーでボタンをクリックした後に処理する必要があるポップアップ ウィンドウがあります。ポップアップがプログラムによって起動されるとすぐに、ドライバー オブジェクトによるそれ以降のアクションにより、次の例外が発生します。

OpenQA.Selenium.WebDriverException: URL に対するサーバーからの応答がありません

driver.WindowHandlesまた、ポップアップ ウィンドウが起動された後、ウィンドウハンドル リスト ( ) の数に変化はありません。これをタブ内のウィンドウの切り替えと混同しないでください。

現在、Selenium ChromeDriver はポップアップ ウィンドウの処理をサポートしていますか?

4

1 に答える 1

1

ポップアップ ウィンドウの扱いは、ウィンドウの数の扱いと同じです。やってみてください:

driver().switchTo().window((String)driver.getWindowHandles().toArray()[index]);

ここで、index は新しいウィンドウのインデックスです (適切なスイッチ ウィンドウ関数で引数として渡すことができます)。

後で、次のようなよりクリーンな方法で実装できます。

*この場合、webdriver は WebDriverProxy オブジェクトでゆがんでいます。

    public static void switchFocusToWindowNumber(int index, WebDriverProxy webDriverProxy) {
    try {
        webDriverProxy.getWebDriver().switchTo().window((String) webDriverProxy.getWebDriver().getWindowHandles().toArray()[index]);
    } catch (ArrayIndexOutOfBoundsException e) {
        throw new ArrayIndexOutOfBoundsException("ArrayIndexOutOfBoundsException: Number of open windows is: "
                + getNumberofWindows(webDriverProxy) + " Trying to close window number: " + index + "\n Exception: " + e);
    }    catch (NoSuchWindowException e) {
        throw new NoSuchWindowException ("NoSuchWindowException: Number of windows is: " + getNumberofWindows(webDriverProxy) +
                " Trying to close window number: " + index + "\n Exception: " + e);
    }

}
于 2013-09-24T13:56:34.337 に答える