3

これはSeleniumのmy other recent questionに関連しています(この問題はFirefox固有の問題に関するものでした。特有の問題)。NoSuchWindowException - 他の回答の設定アドバイスにもかかわらず、IE上のSeleniumで閉じたウィンドウの要素を見つけることができません。

基本的に、私はリンクをクリックシミュレートするために、次のコード

ieDriver.Navigate().GoToUrl("http://localhost:51282"); 
IWebElement linkToAboutPage = ieDriver.FindElement(By.Id("test")); 
linkToAboutPage.Click(); 

を実行したときに、それが成功したページに移動しますが、それは実際の要素を取得しようとすると、私は次の例外を取得:

An exception of type 'OpenQA.Selenium.NoSuchWindowException' occurred in WebDriver.dll but was not handled in user code

Additional information: Unable to find element on closed window

this question sの受け入れ答えIEセキュリティ設定の[保護モードを有効にする]がすべて選択されているか、選択されていないかのいずれかを選択してください。確かに、私はこれらの設定を見ると、「保護モードを有効にするには、」イントラネットのためではなく、他人のために選択されていない: enter image description here

残念ながら、スクリーンショットが示すように、それは私の企業のIT部門によって管理されていますし、私はしませんよ私が設定を変更できるように彼らに説得する運がたくさんあることを確かめてください。私はまた、いくつかの他の回答によって示唆された方法で私のレジストリを編集することもできませんでした(おそらく、管理者権限がないためです)。

私が見てきた他のソリューションのいくつかは、trueIntroduceInstabilityByIgnoringProtectedModeSettingsを設定InitialBrowserUrlを提供する、またはtrueEnsureCleanSessionを設定します。以下に示すように、私は現在、これらすべてのことを行っています。

var ieOptions = new InternetExplorerOptions() 
{ 
    InitialBrowserUrl = "http://www.google.com", 
    IntroduceInstabilityByIgnoringProtectedModeSettings = true, 
    IgnoreZoomLevel = true, 
    EnableNativeEvents = true, 
    EnsureCleanSession = true 
}; 

ieDriver = new InternetExplorerDriver(ieOptions); 
ieDriver.Manage().Timeouts().ImplicitWait = new TimeSpan(0, 0, 10); 

しかし、私はまったく同じ問題を抱えています。

企業のITにポリシーの例外を尋ねる私には関係しない他の試みがありますか?私は(私は私のテストのほとんどをするつもり場所それはだから、問題がある)localhost上で実行しているとき

はおそらく大幅に、こののみが起こります。

答えて

3

IntroduceInstabilityByIgnoringProtectedModeSettings = trueとペアにして、移動したい開始URLにInitialBrowserUrl機能を設定すると、私の仕事に役立つことがわかりました。


はこちらから(あなたが試すことができますいくつかの他のソリューションをだ...

var ieOptions = new InternetExplorerOptions() 
{ 
    InitialBrowserUrl = <your-starting-url> 
    IntroduceInstabilityByIgnoringProtectedModeSettings = true, 
    ... 
}; 

残念ながら、私はこの作品理由として理由を持っていないので、これは「修正」単に逸話であるかもしれません公式参照):

必要な設定

  • IEDriverServer exectuableはdownloadedで、PATHに配置する必要があります。
  • Windows VistaまたはWindows 7のIE 7以降では、各ゾーンの保護モード設定を同じ値に設定する必要があります。値はすべてのゾーンで同じである限り、オンまたはオフにすることができます。保護モードの設定を行うには、[ツール]メニューの[インターネットオプション...]を選択し、[セキュリティ]タブをクリックします。ゾーンごとに、[保護モードを有効にする]タブの下にチェックボックスが表示されます。
  • また、IE 10以降では、「拡張保護モード」を無効にする必要があります。このオプションは、[インターネットオプション]ダイアログの[詳細設定]タブにあります。
  • ネイティブのマウスイベントを正しい座標に設定できるように、ブラウザのズームレベルを100%に設定する必要があります。
  • IE 11 のみの場合、作成するInternet Explorerのインスタンスへの接続をドライバが維持できるように、ターゲットコンピュータにレジストリエントリを設定する必要があります。 32ビットWindowsインストールの場合、レジストリエディタで確認する必要があるキーはHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHEです。 64ビットWindowsインストールの場合、キーはHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHEです。 FEATURE_BFCACHEサブキーが存在する場合と存在しない場合があり、存在しない場合は作成する必要があります。 重要:このキーインサイド、0

基準の値でiexplore.exeという名前のDWORD値を作成します。

https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#required-configuration

関連する問題