由于我们仅在开发前端应用程序,因此我正在使用量角器在http:localhost /上编写e2e测试。 我必须登录到客户端集成,然后从本地存储手动复制令牌值,并将其传递给我创建的自定义登录方法。 是否有自动化该登录过程的方法?
任何建议都会很棒
到目前为止,我已经尝试过window.localStorage.getItem()和window.localStorage.setItem()
public static Login(): void {
browser.get('login url');
browser.driver.findElement(by.id('username')).sendKeys('user');
browser.driver.findElement(by.id('password')).sendKeys('pass');
browser.driver.findElement(by.id('submit')).click();
browser.waitForAngular();
const token: string = window.localStorage.getItem('AuthenticationToken');
browser.get('error page');
window.localStorage.setItem('AuthenticationToken', token);
browser.get('home page');
}
我收到此错误:
答案 0 :(得分:1)
可以使用localStorage.setItem('Auth_token', data)
和localStorage.getItem(keyName)
来设置和获取本地存储的@Abhishek项
但是,据我了解,这只能在浏览器的控制台中完成,而不能在量角器脚本中完成。因此,如果您想在量角器脚本中实现相同的结果,则可以执行以下操作:
browser.executeScript(`return window.localStorage.getItem(keyName);`);
或者,如果您打算大量使用本地存储,请按照以下步骤实施新的local-storage.js
模块:
function LocalStorage () {
this.get = async function () {
let storageString = await browser.executeScript("return JSON.stringify(window.localStorage);");
return JSON.parse(storageString);
};
this.clear = async function () {
return browser.executeScript("return window.localStorage.clear();");
};
this.getValue = async function (key) {
return browser.executeScript(`return window.localStorage.getItem('${key}');`);
};
this.setValue = async function (key, value) {
return browser.executeScript(`window.localStorage.setItem('${key}', '"${value}"');`);
};
}
module.exports = new LocalStorage();
然后在您的规范中,执行以下操作:
localStorage = require("./local-storage.js");
describe(`Suite: Home page`, () => {
fit("Login to the application", async () => {
console.log(await localStorage.getValue("calltrk-calltrk_referrer"));
await localStorage.setValue("key", "value");
console.log(await localStorage.getValue("key"));
console.log(await localStorage.get());
});
});
请注意,我仅使用async/await
关键字处理Promises。因此您的语法可以不同,但是方法应保持不变