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:
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.
See Question&Answers more detail:
os