Reputation: 3191
I'm using watir-webdriver to drive IE to test a website using a SSL certificate for another website. (the production version of same website)
When I visit my site, I get a page that looks like this (Since the security certificate is bad)
The watir documentation has a workaround for this http://wiki.openqa.org/display/WTR/Security+Alerts my_browser.link(:id, "overridelink").click
When I try to run this in the ruby console, I get an error.
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>
When you look at the html for the error page, the continue link is definitely there.
<tr>
<td > </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>
Does anyone know how to get around this problem?
Upvotes: 3
Views: 2137
Reputation: 23
this code works on my IE10, it clicks "overridelink" perfectly.
browser.goto("javascript:document.getElementById('overridelink').click()")
Upvotes: 0
Reputation: 65
A solution for this that I use is to use autoit to tab into the 'continue to website', saves having to add to website all the time
autoit=WIN32OLE.new('AutoItX3.Control')
i=1
while i < 11
autoit.Send("{Tab}")
i+=1
end
autoit.Send("{Enter}")
Upvotes: 1
Reputation: 3685
There is no way to avoid this automatically as far as I know with Watir-WebDriver.
The solution is to make sure IE doesn't care about this error:
Upvotes: 4
Reputation: 57262
I think this is the right page to see how watir-webdriver works with certificates: http://watirwebdriver.com/browser-certificates/
Unfortunately, I do not see anything about IE browser.
Update: Alister said "I believe you manually need to add the certificate to trusted root" https://twitter.com/#!/alisterscott/status/124047931945922561
Upvotes: 2