在我的应用程序中,我曾经将一个变量更改为更改为测试模式。
现在,我改变了一点,以便我可以添加一个URL参数(test=true
)来设置我的应用程序与模拟后端一起运行以及测试时所需的所有内容。
一切正常。
它的工作方式是,如果URL存在,我设置一个localstorage项(testing: true
),如果它存在于本地存储中,则我的变量设置为true
,这意味着我处于测试模式。
但是,在量角器中,即使在更改基本URL以包含参数之后,localstorage项也不会设置且我的应用程序未处于测试模式。
我在这里做错了什么?
这里是配置文件:
exports.config = {
specs: ['tests/e2e/*.js'],
baseUrl: "http://localhost:8100/?test=true",
seleniumAddress: 'http://127.0.0.1:4444/wd/hub',
framework: 'jasmine2',
defaultTimeoutInterval: 120000,
onPrepare: function () {
browser.driver.get(browser.baseUrl);
var SpecReporter = require('jasmine-spec-reporter');
jasmine.getEnv().addReporter(new SpecReporter({
displayStacktrace: false,
displaySuccessful: true,
displayFailed: true
}));
var jasmineReporters = require('jasmine-reporters');
var junitReporter = new jasmine.JUnitXmlReporter('tests/e2e/');
jasmine.getEnv().addReporter(junitReporter);
}
};
以及设置localStorage项的代码如下:
<script>
function getParameterByName(name, url) {
if (!url) {
url = window.location.href;
}
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
var isTesting = getParameterByName('test');
if (isTesting === "true"){
debugger
localStorage.setItem('testing', true)
} else {
localStorage.removeItem('testing')
}
window.__TESTING__ = localStorage.getItem('testing');
console.log (window.__TESTING__);
</script>
感谢您的帮助
答案 0 :(得分:1)
您可以使用
直接从量角器更改本地存储的值browser.executeScript("window.localStorage.setItem('testing',true)");
在量角器配置文件的onPrepare方法中添加上述语句。