2011-10-10 101 views
22

我有一些Selenium 2 Webdriver測試用例用於Firefox和Internet Explorer 9.當我訪問IE9上的https URL(Windows 7 64bit)時,我得到「這個網站的安全證書存在問題」。此時測試掛起並最終失敗。我試過: Selenium 2 Webdriver和IE 9安全證書

  • 讓Selenium點擊「繼續瀏覽本網站(不推薦)」。鏈接。這不能完成,因爲這個錯誤頁面不是你平常的頁面。與JavaScript相同 - 它不會執行。
  • 我試圖添加註冊表項
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_ERROR_PAGE_BYPASS_ZONE_CHECK_FOR_HTTPS_KB954312
    ,防止證書錯誤頁面顯示 - 沒有工作。可能是因爲我在使用IE9的Windows 7上。
  • 正在關注this建議我嘗試使用browsermob代理,但那裏的文檔很少,我無法解決。
  • 最後,我沒有管理員訪問我的電腦 - 例如,無法訪問組策略。 Selenium 2 Webdriver在Firefox上運行良好。我在IE Internet Options中啓用了所有安全區域,如果我在其他URL(http)上運行測試,那麼沒有問題。

    有沒有人有解決這個問題?現在有人有效地使用browsermob代理(或任何其他代理)來有效地解決此問題嗎?

    感謝, 達摩

    +1

    您提到的功能鍵與HTTPS證書接受無關。您最好的辦法是將證書安裝在用戶的可信存儲區(certmgr.msc)中,假設錯誤是根不受信任。 – EricLaw

    回答

    2

    這在過去的工作對我來說,不妨一試,

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

    試過了,但沒有運氣。你在IE9中試過這個嗎? –

    +0

    我還沒有在IE9上試過它。非管理員權限是否允許您在IE中安裝安全證書?或者那是你不喜歡的東西? – nilesh

    +0

    我在w7中嘗試過它,ie8並不起作用 – hithwen

    0

    此Any陸侃? 我試圖做到這一點的能力的事情......但我不知道如何使用做紅寶石:(

    在Chrome很簡單,因爲你可以使用交換機:

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

    也許有可能做到這一點對IE瀏覽器使用開關

    26

    好吧,我剛剛使用C#IE9下它的工作和下面的代碼:

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

    現在將進入預期的頁面。

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

    這工作就像一個魅力!謝謝! – JacekM

    +0

    非常感謝。它確實幫了很大忙。 – GirishB

    +0

    工作....涼爽的人...事情是這樣的...人們在所有的地方複製我們的代碼:D –

    0

    存在情況下,更簡單的解決方案,您使用IE瀏覽器的驅動程序,在此reply記載:對於Java它是那樣簡單。額外的好處是,你不必成爲網站所有者,你不必與browsermob或註冊表或任何其他低級技術糾結

    0

    我們可以使用下面的代碼。

    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(); 
    
    4

    使用硒Python綁定:

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

    其他的答案有正確的想法,但在實踐中失敗,因爲WebDriver不會立即找到證書錯誤頁面。正確的實現應該稍微等一下。

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