5

Selenium Webdriver を使用して自動化に IE を使用しているときに、URL を開くことはできますが、そのページの要素を見つけると、次の例外がスローされます。

org.openqa.selenium.NoSuchWindowException: 閉じたウィンドウで要素が見つかりません (警告: サーバーはスタックトレース情報を提供しませんでした)

メソッドを試しましたdriver.switchTo.window()が、うまくいきません。何時間も探しましたが、どこにも行きません。

コードは次のとおりです。

public static Selenium selenium;

public static void main(String args[]) {

    try {

        System.setProperty(
            "webdriver.ie.driver",
            "D:\\Driver\\IEDriverServer_Win32_2.32.3_latest\\IEDriverServer.exe");

        DesiredCapabilities capab = DesiredCapabilities.internetExplorer();
        capab.setCapability(
            InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,
            true);

        WebDriver driver = new InternetExplorerDriver(capab);
        driver.get("http://www.google.com");
        driver.findElement(By.xpath(".//*[@id='addlang']/a[1]")).click();

    } catch (Exception e) {
        e.printStackTrace();
    }
}
4

4 に答える 4

7

機能を削除INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINSし、すべてのゾーンで同じになるように IE 保護モード設定を手動で設定します。

ソース:

  1. http://jimevansmusic.blogspot.com/2012/08/youre-doing-it-wrong-protected-mode-and.html

  2. Selenium WebDriver で InternetExplorerDriver の実装中に NoSuchElementException が発生する

于 2013-05-15T08:03:31.743 に答える
3
case "ie_driver":           

    //IE CODE
    DesiredCapabilities cap = new DesiredCapabilities();
    cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
    cap.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, "https://testvmm6.partnersonline.com/vmm");
    cap.internetExplorer().setCapability("ignoreProtectedModeSettings", true);

    System.setProperty("webdriver.ie.driver", System.getProperty("user.dir")+"//exe//IEDriverServer1.exe");
    cap.setCapability("IE.binary", "C:/Program Files (x86)/Internet Explorer/iexplore.exe");
    cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    cap.setJavascriptEnabled(true);
    cap.setCapability("requireWindowFocus", true);
    cap.setCapability("enablePersistentHover", false);
于 2014-12-31T07:07:13.970 に答える
1

私を助けた問題は、初期ページを設定することでした(IE 11は32と64の両方)

 private WebDriver getIEDriver() {
    DesiredCapabilities cap = new DesiredCapabilities();
    cap.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, INIT_PAGE);

    File file = new File("E:/drivers/IEDriverServer.exe");
    System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
    return new InternetExplorerDriver(cap);
 }
于 2015-07-22T09:09:36.170 に答える
1

ここでの最善の策は、レジストリを微調整することです。

  1. レジストリの編集に移動します ( regeditWindows の実行から)

  2. の下のレジストリを調べますHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InternetSettings\Zones。そこに、キー番号 0-4 が表示されます。これらのキー 0 ~ 4 の下で、2500 という名前の値を探します

  3. 0 ~ 4 のすべてのキーについて、値 2500 のデータは同じです。たとえば、キー 0 の場合、値 2500 のデータが 3 (16 進データ) の場合、値 2500 のデータを他のすべてのキーの 3 にします。 (1,2,3,4)。

  4. ここで、スクリプトを実行してみます。

于 2016-08-11T15:22:35.750 に答える