We recently started testing our Django-based application using Selenium. Tests run fine on Linux, but some fail on Mac OS X. We're using Firefox as the browser in both cases, and it took us a while (and some luck) to figure out that the important difference between the two cases is whether FF is running as the foreground application or as a background window. Here's what happens on Linux:
When we run on Mac OS X, however, step #4 doesn't happen unless we manually foreground the Firefox window while the test is running---if we leave it in the background (which is where it comes up by default), the Javascript in the browser doesn't get the change-of-focus event, so the error message is never inserted in the page's DOM, so Selenium times out waiting for it, and the test fails.
Can we force Selenium to foreground the browser when tests run, so that our Javascript will get events as we want it to? If so, how?
Step 1: Navigate to the official Selenium website. Under third-party drivers, one will find all the drivers. Just click on the Mozilla GeckoDriver documentation as shown below. Now, it will navigate to the GeckoDriver downloads link, where one can download the suitable driver based on the OS as it is platform agnostic.
Marionette is an automation driver for Mozilla's Gecko engine. It can remotely control either the UI or the internal JavaScript of a Gecko platform, such as Firefox.
Selenium drives the browser through Javascript. There is no way to control browser window through JS. In general, testing the 'onfocus' and 'onblur' events in Selenium is very difficult.
You can try firing this event yourself by doing a JS evaluation using either the 'runScript' or the 'getEval' methods of Selenium after entering the invalid email address. This is not "pure" black box testing i.e. your test needs to be changed if the implementation of the validation is changed, but this is the most feasible way to carry out this test.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With