web-dev-qa-db-ja.com

Selenium 2 WebdriverおよびIE 9 Security Certificate

FirefoxおよびInternet Explorer 9用のSelenium 2 Webdriverテストケースをいくつか持っています。IE9(Windows 7 64ビット)でhttps URLにアクセスすると、「このWebサイトのセキュリティ証明書に問題があります」と表示されます。この時点で、テストはハングし、最終的に失敗します。私は試した:

  • Seleniumが「このWebサイトに進む(推奨されません)」をクリックするようにします。リンク。このエラーページは通常のページではないため、これを行うことはできません。 JavaScriptと同じ-実行されません。
  • レジストリキーを追加してみた
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_ERROR_PAGE_BYPASS_ZONE_CHECK_FOR_HTTPS_KB954312
    これにより、証明書エラーページが表示されなくなります-機能しませんでした。おそらく私はIE9を搭載したWindows 7を使用しているためです。
  • 以下 this のアドバイスbrowsermobプロキシを使用してみましたが、ドキュメントがほとんどなく、解決できませんでした。
  • 最後に、私は自分のPCへの管理者アクセス権を持っていません。グループポリシーにアクセスできません。 Selenium 2 WebdriverはFirefoxで正常に動作します。 IEインターネットオプション)ですべてのセキュリティゾーンを有効にしており、他のURL(http)でテストを実行しても問題はありません。

    誰かがこの問題の解決策を持っていますか?この問題を克服するためにbrowsermobプロキシ(またはその他のプロキシ)を効果的に使用することに熱心な人はいますか?

    ありがとう、ダモ

    22
    damo_inc

    私はSQAボードで答えを見つけました: https://sqa.stackexchange.com/questions/1928/Selenium-2-webdriver-and-ie-9-security-certificate

    証明書を作成し、それは魅力のように働きました。

    3
    damo_inc

    さて、C#と次のコードを使用してIE9で動作させました。

    IWebDriver driver = new InternetExplorerDriver();
    driver.Url(YOUR_URL);
    driver.Navigate().GoToUrl("javascript:document.getElementById('overridelink').click()");
    

    そして今、それは意図されたページに行きます。 Javaの場合、次のように簡単です。

    WebDriver driver = new InternetExplorerDriver();
    driver.get(YOUR_URL);
    driver.get("javascript:document.getElementById('overridelink').click();");
    
    26
    Nyegaard

    Selenium-Pythonバインディングの使用:

    #region SSL workaround for IE
    if "Certificate Error" in driver.title:
        driver.get("javascript:document.getElementById('overridelink').click();")
    
    4
    lacy

    これは過去に私にとってはうまくいきました、試してみてください、

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);      
    Webdriver driver = new InternetExplorerDriver(capabilities);
    
    2
    nilesh

    IEドライバ、これに記載されているドライバ reply を使用する場合は、はるかに簡単な解決策があります。追加の利点は、サイトの所有者である必要がなく、 browsermobやレジストリ、その他の低レベルのテクノロジーに煩わされる必要はありません

    0
    Michael Bahig

    これに進展はありますか?私はこの機能を実行しようとしています...しかし、Ruby :(を使用してそれを実行する方法がわかりません

    chromeでは、スイッチを使用できるので簡単です:

    nav=Selenium::WebDriver.for(:chrome, :switches => %w[--ignore-certificate-errors -])
    

    多分それはIEのためにスイッチを使用してそれを行うことが可能です

    0
    Mario

    次のコードを使用できます。

    wait =new WebDriverWait(webdriver, 10);
    
    webdriver.get(url);
    WebElement ele =wait.until(ExpectedConditions.elementToBeClickable(
                   webdriver.findElement(By.linkText("Continue to this website (not  
                   recommended)."))));
     ele.click();
    

    他の答えは正しい考えですが、WebDriverが証明書エラーページにすぐに移動しないため、実際には失敗します。正しい実装は少し待つ必要があります。

    new WebDriverWait(driver, 10).until(ExpectedConditions.titleContains("Certificate"));
    
    
    driver.navigate().to("javascript:document.getElementById('overridelink').click()");
    
    0
    Cord Rehn