web-dev-qa-db-ja.com

IE 11でSeleniumの閉じたウィンドウで要素が見つかりません

Selenium WebDriverと連動するInternet Explorer 11でテストを実行しようとしています。コードは次のとおりです。

System.setProperty("webdriver.ie.driver", "Path/to//IEDriverServer.exe");
        WebDriver driver = new InternetExplorerDriver();
driver.get("www.google.com");
driver.findElement(By.name("q"));

そして、私はこのエラーを受け取ります:

InternetExplorerDriverサーバー(64ビット)2.46.0.0を起動しました。ポート43760でリッスンします。スレッド "main"で例外が発生しました。またはタイムアウト:15ミリ秒ビルド情報:バージョン: '2.46.0'、リビジョン: '61506a4624b13675f24581e453592342b7485d71'、時間: '2015-06-04 10:22:50'システム情報:ホスト: 'user1-PC'、ip: ' 10.0.23.71 '、os.name:' Windows 7 '、os.Arch:' AMD64 '、os.version:' 6.1 '、Java.version:' 1.8.0_45 'ドライバー情報:org.openqa.Selenium.ie。 InternetExplorerDriver機能[{browserAttachTimeout = 0、enablePersistentHover = true、ie.forceCreateProcessApi = false、pageLoadStrategy = normal、ie.usePerProcessProxy = false、ignoreZoomSetting = false、handlesAlerts = true、version = 11、platform = WINDOWS、nativeEvents = true、すなわち。 ensureCleanSession = false、elementScrollBehavior = 0、ie.browserCommandLineSwitches =、requireWindowFocus = false、browserName = internet Explorer、initi alBrowserUrl = http:// localhost:43760 / 、takesScreenshot = true、javascriptEnabled = true、ignoreProtectedModeSettings = false、enableElementCacheCleanup = true、cssSelectorsEnabled = true、unexpectedAlertBehaviour = dismiss}]セッションID:8a5b7ab5-862a- 462d-ab4b-929d4ed5b71a ***要素情報:{Using = name、value = q} at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)at Sun.reflect.DelegatingConstructorAccessorImpl org.openqa.Selenium.remote.ErrorHandler.createThrowable(ErrorHandler.Java:204)のorg.openqa.Selenium.remote.ErrorHandlerのJava.lang.reflect.Constructor.newInstance(Unknown Source)の.newInstance(Unknown Source) throwIfResponseFailed(ErrorHandler.Java:156)at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:605)at org.openqa.Selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.Java:358)at org.openqa .Selenium.remote.RemoteWebDriver.findElementByName(RemoteWebD river.Java:431)org.openqa.Selenium.By $ ByName.findElement(By.Java:300)at org.openqa.Selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.Java:350)at MySel20Proj.MySel20Proj.App .main(App.Java:42)

https://code.google.com/p/Selenium/wiki/InternetExplorerDriver の設定チュートリアルを実行しようとしましたが、まだ機能していません。そして、このコードはFirefoxとChromeで動作します。

14
Alex

[〜#〜] all [〜#〜]ゾーンで[インターネットオプション]-> [セキュリティ]-> [保護モードを有効にする]に移動してみてくださいチェックするか、[〜#〜] all [〜#〜]チェックを外します。

enter image description here

32
user2771721

2つの方法があります。

方法1:INITIAL_BROWSER_URLの設定:

File ieFile = new File("D:\\IEDriverServer_x64_2.53.0\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", ieFile.getAbsolutePath());
DesiredCapabilities ieCaps = DesiredCapabilities.internetExplorer();
ieCaps.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, "http://www.bing.com/");
driver = new InternetExplorerDriver(ieCaps);
//some operations on that site
driver.findElement(By.id("sb_form_q")).clear();
driver.findElement(By.id("sb_form_q")).sendKeys("Ripon Al Wasim");
driver.findElement(By.id("sb_form_go")).click();

方法2:ターゲットコンピューターにレジストリエントリを設定するには:
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サブキーは存在する場合と存在しない場合があり、存在しない場合は作成する必要があることに注意してください。重要:このキー内で、iexplore.exeという名前のDWORD値を値0で作成します。

詳細については、以下をご覧ください: https://github.com/SeleniumHQ/Selenium/wiki/InternetExplorerDriver#required-configuration

8
Ripon Al Wasim

すべての可能な解決策を通過した後、私は同じ問題に直面しました最終的に答えを得ました。これを試してみてくださいあなたの問題も間違いなく解決します.

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();

capabilities.setCapability(CapabilityType.BROWSER_NAME, "IE");

capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);

capabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);

System.setProperty("webdriver.ie.driver","C://MavenTest//driver//IEDriverServer.exe");

driver = new InternetExplorerDriver();
3
User6

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サブキーは存在する場合と存在しない場合があり、存在しない場合は作成する必要があることに注意してください。重要:このキー内で、iexplore.exeという名前のDWORD値を値0で作成します。

Screenshot

1
Manikanta Thota

Ripon Al WasimがこのURLを投稿しました。これは、Seleniumと連携するIE11の鍵です。 https://github.com/SeleniumHQ/Selenium/wiki/InternetExplorerDriver#required-configuration

私はこのセットアップを持っていました:

  • Windows 7 Pro 64ビット
  • IE11 64ビット、最新の私が見つけた
  • Seleniumリモートサーバー2.53.1 64ビット
  • IEDriverServer 2.53.1 64ビット
  • 64ビットPythonで使用される64ビットLinuxマシンにインストールされたSelenium 2.53.1モジュール

ここからダウンロード: http://Selenium-release.storage.googleapis.com/index.html?path=2.53/

私はガイドに従い、次のことをしなければなりませんでした。

  • IE10およびIE11の要件であるすべてのセキュリティゾーンで拡張保護モードを無効に設定します。
  • FEATURE_BFCACHEキーとiexplore.exe DWORDをレジストリに追加します
  • 使用するすべてのソフトウェアを64ビットにしました。
  • ズームインIEが100%に設定されていることを確認します。
  • Windowsの表示設定でテキストのサイズが100%かどうかを確認します。

Additionaly:

  • Selenium remote serverIEDriverServerと通信できないため、IEでプロキシ設定を無効にする必要がありました。
  • 64ビットSeleniumでのキー入力がタイムアウトの問題により遅いため、requireWindowFocusをtrueに設定してwebdriverを実行しています( Selenium WebDriverはIE browser

そしてそれは働いた。スタンドアロンサーバーを実行するときにIEDriverServer.exeへのパスを指定すると、ガイドから迂回するため、PATHに含める必要はありません。

0
nio

私は同様の問題に直面していました。 Mavenビルドでコードを実行しているときに直面しました。ここで、POM XMLファイルには異なるバージョンがありましたが、実際にインストールされたSeleniumは別のバージョンです。そのため、インストールされているバージョンと一致するようにバージョンを変更しました。そして今、すべてが正常に動作しています

0