3

IE が onclick.window.open() を使用して 2 番目のブラウザー ウィンドウを開くと、2 番目のウィンドウで何らかの処理を行ってからウィンドウを閉じる必要があります。

ウィンドウハンドルに関してstackoverflowにある次の推奨事項を試しました:

 string popupHandle = string.Empty;
    ReadOnlyCollection<string> windowHandles = selObj.Driver.WindowHandles;
    foreach (string handle in windowHandles)
    {
        if (handle != originalHandle)
        {
            popupHandle = handle;
            break;
        }
    }

    selObj.Driver.SwitchTo().Window((popupHandle));

    selObj.Driver.Close();

    selObj.Driver.SwitchTo().Window(originalHandle);

このコードを実行する前に、新しいウィンドウのコントロールをクリックしてフォーカスを変更しようとしました。

Webdriver はコントロールを見つけることができません (また、WebDriverWait クラスを使用して、2 番目のブラウズが完全にロードされるまで待機しようとしました。

WebDriverWait も、待機秒後に例外をスローします。

実行しようとしたとき:

selObj.Driver.SwitchTo().Window((popupHandle));

次の例外が発生します。

No response from server for url http://

私はこれが C# と IE であることを知っています。

ありがとう

4

2 に答える 2

0

私のトリオ C#+WebDriver+Ie は正常に動作します。

はい - IE をフォーカスする必要があります。私のコードを試してください。コードは IE、Chrome、Firefox で動作します

protected void SwitchToWindow(string name)
    {
        foreach (string item in _driver.WindowHandles)
        {
            if (_driver.SwitchTo().Window(item).Title.Contains(name))
            {
                _driver.SwitchTo().Window(item);
                break;
            }
        }
    }

_driver は、場合の selObj.Driver です。

于 2012-09-18T11:34:28.560 に答える