bbonamin
bbonamin

Reputation: 30773

How to handle security alert in Firefox with Selenium

I'm using selenium-webdriver with ruby to write automated tests.

Chrome and the chromedriver binary work really well, but I have an issue with Firefox that is related to the configuration of the browser and that's making my tests fail, whereas they pass with Chrome.

When executing the tests in Firefox, sometimes I get an alert with this message:

Although this page is encrypted, the information you have entered is to be sent over an unencrypted connection and could easily be read by a third party

And it breaks the execution. Is there a way of disabling this warning in recent Firefox versions (10+) or handling this behavior with Selenium?

Upvotes: 3

Views: 3698

Answers (3)

bbonamin
bbonamin

Reputation: 30773

In the process of finding a solution for this, I think I might have found a bug in Capybara (v1.1.2).

I managed to get around this problem using the following approach, instead of using the click from capybara (which would not allow me to capture an exception), I started using the click method from selenium-webdriver.

It seems that when Firefox triggers this alertbox, a string with the message

Although this page is encrypted, the information you have entered is to be sent over an unencrypted connection and could easily be read by a third party

is returned as a result of object.native.click, otherwise the string

ok

is returned.

# Define the click method in ruby and call it when you're executing a 'click'

  # Public: Click the object.
  #
  # object - Capybara::Node::Element object to click.
  def click object
    return_string = object.native.click
    check_firefox_alertbox if return_string == "ok"
  end

  def check_firefox_alertbox
    if @current_browser == :firefox 
     @session.driver.browser.switch_to.alert.accept
    end
  rescue Exception => e
    puts e
  end

Upvotes: 2

Prashant Shukla
Prashant Shukla

Reputation: 1389

Here is what you can do. Type about:config in the firefox. You would be presented a number of options (once you pass through a warning message).

You have to look for security.warn_leaving_secure; and security.warn_leaving_insecure. Make both of them false. And you would be good to go.

Please note: This would work only on the FF instance you have made modification to, so you will need to use firefox profile to launch this instance.

Hope this helps.

Upvotes: 1

Xwris Stoixeia
Xwris Stoixeia

Reputation: 1861

Actually this meant to be a comment but I need to go above 50 in order to be able to comment..I suppose by 'breaking' the execution you mean that of the Ruby Script right? What happens to Firefox? Needs a click to proceed? If that is the case you can improvise by capturing the Ruby error after inserting the sensitive code (where it breaks) between a BEGIN and a RESCUE clause..Something like this..

  BEGIN
   .
   .
  Code that is giving you a headache
   .
   .
  RESCUE
   .
  Capture the exception and give Ruby a chance to continue the script normally.
   .
   .
  END

Alternatively if you don't fancy the above solution you can go to Firefox and then type in the address box about:config. Filter by 'security.warn' and set to false all the boolean variables you see there. Good riddance, fingers crossed ;)

Upvotes: 0

Related Questions