【发布时间】:2023-04-03 10:25:01
【问题描述】:
如果在浏览器中禁用 javascript(使用 noscript),我们的一个内部应用程序(用 angularjs 编写)会出现一个特殊的错误框,类似于 stackoverflow 上的错误框:
我正在尝试为它编写一个自动化测试,但遇到了困难。
我们使用的是protractor,但我很确定这与它无关。这是量角器配置文件:
'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
}
};
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;
};
如您所见,我们将javascript.enabled firefox 首选项设置为false,如果您在firefox 中手动打开about:config,将其更改为false,您将看到@ 的内容。 987654337@部分。
但是,当我运行测试时,我收到以下错误:
抛出异常 org.openqa.selenium.WebDriverException: 等待 evaluate.js 加载失败
仅供参考,使用 selenium 2.44.0 和 firefox 33.1.1。
据我了解(在 here 提出的几点帮助下),禁用 javascript 正在扼杀 javascript webdriver 本身。这是真的吗?如果是,我有哪些选择或解决方法?
注意事项:
如果是chrome,过去可以通过
--disable-javascriptcommand-line argument禁用javascript,但notanymore.这导致解决方法编号 0 - 将 chrome 降级到支持命令行标志的旧版本 - 这将是一个未经测试的计划 B
-
设置
javascript.enabled=falsefirefox 首选项适用于python selenium 绑定: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
我愿意接受任何建议,并可以为您提供任何其他信息。
【问题讨论】:
-
您可以关闭 JavaScript 并且仍然让 Python 代码正常工作这一事实向我表明,关闭 JavaScript 并不会扼杀浏览器内部的 WebDriver 部分。您在禁用 JavaScript 时遇到的错误很可能是由 Protractor 本身或 WebDriverJS 引起的。
-
@Louis 我不知道你是怎么做到的,但你再次设法帮助了我,你的评论让我深入思考并触发了对源代码的挖掘。请看答案。谢谢。
-
只是演绎推理,大量时间花在 Selenium 上。
标签: javascript firefox testing selenium-webdriver protractor