dimanche 30 novembre 2014

Running Selenium WebDriver tests with JavaScript disabled


One of our internal applications (written in angularjs) has a special error box appearing if javascript is disabled in the browser (using noscript ), similar to the one on stackoverflow:


enter image description here I'm trying to write an automated test for it, but having difficulties.


We are using protractor, but I'm pretty sure this is not about it. Here is the protractor configuration file:



'use strict';

var helper = require('./helper.js');

exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
baseUrl: 'http://localhost:9001',

capabilities: helper.getFirefoxProfile(),

framework: 'jasmine',
allScriptsTimeout: 20000,

jasmineNodeOpts: {
showColors: true,
isVerbose: true,
includeStackTrace: true
}
};


where helper.js is:



var q = require('q');
var FirefoxProfile = require('firefox-profile');

exports.getFirefoxProfile = function() {
var deferred = q.defer();

var firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("javascript.enabled", false);
firefoxProfile.encoded(function(encodedProfile) {
var capabilities = {
'browserName': 'firefox',
'firefox_profile' : encodedProfile,
'specs': [
'*.spec.js'
]
};
deferred.resolve(capabilities);
});

return deferred.promise;
};


As you see, we are setting javascript.enabled firefox preference to false which has been proven to work if you manually open up about:config in firefox, change it to false - you would see the contents of noscript section.


But, when I run the tests, I am getting the following error:



Exception thrown org.openqa.selenium.WebDriverException: waiting for evaluate.js load failed



Here is the complete traceback.


FYI, selenium 2.44.0 and firefox 33.1.1 are used.


As far as I understand (with the help of several points raised here), disabling javascript is killing the javascript webdriver itself. Is it true? If yes, what are my options or workarounds?




Notes:




  • in case of chrome, in the past it was possible to disable javascript via --disable-javascript command-line argument, but not anymore.




  • this leads to a workaround number 0 - downgrade chrome to an old version which supported the command-line flag - this would be a not-tested plan B




  • setting javascript.enabled=false firefox preference works with python selenium bindings:



    from selenium import webdriver

    profile = webdriver.FirefoxProfile()
    profile.set_preference('javascript.enabled', False)
    driver = webdriver.Firefox(firefox_profile=profile)

    driver.get('https://my_internal_url.com')
    # no errors and I can assert the error is present



I'm open to any suggestions and can provide you with any additional information.





Aucun commentaire:

Enregistrer un commentaire