Una delle nostre applicazioni interne (scritto in angularjs) ha una speciale finestra di errore che compare se JavaScript è disabilitato nel browser (utilizzando noscript
), simile a quello su StackOverflow:test Selenium WebDriver con JavaScript disabilitato
Sto provando a scrivere un test automatico, ma con difficoltà.
Stiamo usando protractor
, ma sono abbastanza sicuro che non si tratta di questo. Ecco il file di configurazione goniometro:
'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
}
};
dove helper.js
è:
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;
};
Come vedete, stiamo allestendo javascript.enabled
firefox preferenza ai false
che è stato dimostrato di funzionare se si apre manualmente about:config
in firefox, cambialo in false
- vedresti il contenuto della sezione noscript
.
Ma, quando ho eseguito il test, sto ottenendo il seguente errore:
Exception thrown org.openqa.selenium.WebDriverException: waiting for evaluate.js load failed
Ecco il complete traceback.
FYI, selenio 2.44.0
e firefox 33.1.1
vengono utilizzati.
Per quanto ho capito (con l'aiuto di diversi punti sollevati here), disabilitando JavaScript sta uccidendo il javascript WebDriver sé. È vero? Se sì, quali sono le mie opzioni o soluzioni alternative?
Note:
in caso di Chrome, in passato è stato possibile disattivare JavaScript tramite
--disable-javascript
command-line argument, ma notanymore.questo porta a una serie soluzione 0 - downgrade chrome a una vecchia versione che supportava il flag della riga di comando - questo sarebbe un piano non testato B
impostazione
javascript.enabled=false
firefox preferenza lavora con binding python selenio: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
Sono aperto a qualsiasi suggerimento e in grado di fornire tutte le informazioni supplementari.
Il fatto che sia possibile disattivare JavaScript e avere ancora il codice Python di lavoro mi suggerisce che disattivare JavaScript non sta uccidendo la parte di WebDriver che risiede all'interno del browser. Molto probabilmente gli errori che ricevi con JavaScript disabilitato sono dovuti a Protractor stesso o WebDriverJS. – Louis
@Louis Non so come stai, ma sei riuscito ad aiutarmi ancora, il tuo commento mi ha fatto riflettere profondamente e mi ha spinto a scavare nel codice sorgente. Guarda la risposta per favore. Grazie. – alecxe
Solo un ragionamento deduttivo e un sacco di tempo trascorso con il selenio. – Louis