Selenium WebDriverをIE11で動かすとNoSuchElementException

開発

FireFoxWebDriverで動かしていたSeleniumのテストをIEで動かそうと、WebDriverの設定を以下のように変更しました。

    System.setProperty("webdriver.ie.driver", new File(SeleniumConsts.DRIVER_PATH).getAbsolutePath());
    DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
    capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
    driver = new InternetExplorerDriver(capabilities);
//  driver = new FireFoxWebDriver();

で、実行してみるとこんなエラーが。

org.openqa.selenium.NoSuchElementException: Unable to find element with id == txt_username (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 30.18 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.44.0', revision: '76d78cf323ce037c5f92db6c1bba601c2ac43ad8', time: '2014-10-23 13:11:40'
System info: host: 'tono-PC', ip: '169.254.141.25', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_05'
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{browserAttachTimeout=0, enablePersistentHover=true, ie.forceCreateProcessApi=false, ie.usePerProcessProxy=false, ignoreZoomSetting=false, handlesAlerts=true, version=11, platform=WINDOWS, nativeEvents=true, ie.ensureCleanSession=false, elementScrollBehavior=0, ie.browserCommandLineSwitches=, requireWindowFocus=false, browserName=internet explorer, initialBrowserUrl=http://localhost:5555/, takesScreenshot=true, javascriptEnabled=true, ignoreProtectedModeSettings=true, enableElementCacheCleanup=true, cssSelectorsEnabled=true, unexpectedAlertBehaviour=dismiss}]
Session ID: d55a98ca-a649-4a42-8151-eaa5c18557ea
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:352)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:393)
    at org.openqa.selenium.By$ById.findElement(By.java:214)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:344)
    at jp.co.foo.bar.SiteTest.testSite(SiteTest.java:39)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67)

IE11用のレジストリ設定もしたし、
インターネットオプションの保護モードも外したし…

とネットをさまよっていたところ、こんなページを見つけました。

これによると、2014/12/16にリリースされたKB3025390を適用していると動かないよ、というもの。

コントロールパネル->プログラム->プログラムと機能->インストールされた更新プログラム

と移動してKB3025390を検索するとあったのでアンインストール。

無事動くようになりましたとさ。

しかしIEだと動作遅すぎて使いものにならないな…

コメント

  1. オリオル / Oriol より:

    Thank you for this information. It was very helpful for me.

  2. との より:

    I’m glad to be of some help 🙂

タイトルとURLをコピーしました