Watir не может удалить предупреждение безопасности IE - PullRequest
3 голосов
/ 12 октября 2011

Я использую watir-webdriver для управления IE с целью проверки веб-сайта с использованием SSL-сертификата для другого веб-сайта.(производственная версия того же веб-сайта)

Когда я посещаю свой сайт, я получаю страницу, которая выглядит следующим образом (поскольку сертификат безопасности плохой) http://www.zeus.com/sites/default/files/media/warning2.png

Документация Watir имеетОбходной путь для этого http://wiki.openqa.org/display/WTR/Security+Alerts my_browser.link (: id, "overridelink"). click

Когда я пытаюсь запустить это в консоли 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 для страницы с ошибкой, ссылка продолжения определенно есть.

<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>

Кто-нибудь знает, как обойти эту проблему?

Ответы [ 4 ]

4 голосов
/ 12 октября 2011

Насколько я знаю, Watir-WebDriver не может избежать этого автоматически.

Решение состоит в том, чтобы гарантировать, что IE не заботится об этой ошибке:

  1. Инструменты и выберите Свойства обозревателя
  2. Выберите вкладку Дополнительно
  3. Прокрутите вниз и снимите флажок Предупреждать о несоответствии адреса сертификата
2 голосов
/ 12 октября 2011

Я думаю, что это правильная страница, чтобы увидеть, как watir-webdriver работает с сертификатами: http://watirwebdriver.com/browser-certificates/

К сожалению, я ничего не вижу в браузере IE.

Обновление : Алистер сказал: «Мне кажется, вам нужно вручную добавить сертификат в доверенный корень» https://twitter.com/#!/alisterscott/status/124047931945922561

1 голос
/ 20 апреля 2012

Решение, которое я использую, состоит в том, чтобы использовать autoit для перехода на страницу «Продолжить на сайт», избавляя от необходимости все время добавлять на сайт

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

    autoit.Send("{Enter}")
0 голосов
/ 22 января 2014

этот код работает на моем IE10, он отлично нажимает "переопределить ссылку".

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