2011-10-12 92 views
3

我正在使用watir-webdriver驅動IE來測試另一個網站使用SSL證書的網站。 (同一個網站的量產版)Watir無法清除IE安全警告

當我訪問我的網站,我得到一個頁面,看起來像這樣(由於安全證書是壞的) http://www.zeus.com/sites/default/files/media/warning2.png

的的Watir文檔有此http://wiki.openqa.org/display/WTR/Security+Alerts 一種解決方法my_browser.link(:id,「overridelink」)。點擊

當我嘗試在ruby控制檯中運行這個時,出現錯誤。

irb(main):050:0> b.link(:id, "overridelink").click 
Selenium::WebDriver::Error::UnexpectedJavascriptError: Unable to find element with xpath == .//a[@id='overridelink'] 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-2.8.0/lib/selenium/webdriver/remote/response.rb:45:in `assert_ok' 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-2.8.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize' 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-2.8.0/lib/selenium/webdriver/remote/http/common.rb:54:in `new' 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-2.8.0/lib/selenium/webdriver/remote/http/common.rb:54:in `create_response' 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-2.8.0/lib/selenium/webdriver/remote/http/default.rb:64:in `request' 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-2.8.0/lib/selenium/webdriver/remote/http/common.rb:35:in `call' 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-2.8.0/lib/selenium/webdriver/remote/bridge.rb:410:in `raw_execute' 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-2.8.0/lib/selenium/webdriver/remote/bridge.rb:388:in `execute' 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-2.8.0/lib/selenium/webdriver/remote/bridge.rb:356:in `find_element_by' 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-2.8.0/lib/selenium/webdriver/common/search_context.rb:41:in `find_element' 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/watir-webdriver-0.3.5/lib/watir-webdriver/locators/element_locator.rb:86:in `find_first_by_multiple' 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/watir-webdriver-0.3.5/lib/watir-webdriver/locators/element_locator.rb:33:in `locate' 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/watir-webdriver-0.3.5/lib/watir-webdriver/elements/element.rb:263:in `locate' 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/watir-webdriver-0.3.5/lib/watir-webdriver/elements/element.rb:245:in `assert_exists' 
     from C:/Ruby187/lib/ruby/gems/1.8/gems/watir-webdriver-0.3.5/lib/watir-webdriver/elements/element.rb:65:in `click' 
     from (irb):50 
     from :0irb(main):051:0> 

當您查看錯誤頁面的html時,continue鏈接肯定存在。

<tr> 
<td >&nbsp;</td> 
<td id="continueToSiteAlign" align="left" valign="middle"> 
    <h4 id="continueToSite"> 
     <img src="red_shield.png" ID="ImgOverride" border="0" alt="Not recommended icon" class="actionIcon"><A href='' ID="overridelink" NAME="overridelink" >Continue to this website (not recommended).</A> 
    </h4> 
    </td> 
</tr> 

有誰知道如何解決這個問題?

+0

該頁面是在主瀏覽器實例中顯示,還是彈出一個新窗口? –

回答

4

有沒有辦法避免這種自動據我所知用的Watir-的webdriver。

的解決方案是確保IE不關心這個錯誤:

  1. 工具並選擇Internet選項
  2. 選擇高級選項卡
  3. 向下滾動,並取消警告有關證書地址不匹配
2

我覺得這是怎麼看的Watir-webdriver的使用證書工程右頁:http://watirwebdriver.com/browser-certificates/

不幸的是,我沒有看到關於IE瀏覽器的東西。

更新:阿里斯特說:「我相信你需要手動將證書添加到受信任的根」 https://twitter.com/#!/alisterscott/status/124047931945922561

+0

這是我使用的方法,它模擬用戶在生產網站上看到的證書是真實的,而不會觸發無效的證書屏幕。將其添加到您的測試環境中的根證書,即可完成。也就是說,如果您需要針對生產運行腳本,它們就可以工作。 –

1

爲此我使用的解決方案是使用自動跳轉到'繼續訪問網站',節省必須添加到網站的所有時間

autoit=WIN32OLE.new('AutoItX3.Control') 
    i=1 
    while i < 11 
     autoit.Send("{Tab}") 
     i+=1 
    end 

    autoit.Send("{Enter}") 
0

這段代碼適用於我的IE10,它完美地點擊了「overridelink」。

browser.goto("javascript:document.getElementById('overridelink').click()")