gpt4 book ai didi

javascript - Protractor 可以等待 localStorage 更改(由 REST 调用引起)吗?

转载 作者:行者123 更新时间:2023-11-29 10:11:12 26 4
gpt4 key购买 nike

我正在使用 Protractor 来测试登录提交后是否在 localStorage 中设置了一个值。如果我将 localStorage 值绑定(bind)到 DOM 元素,Protractor 会自动等待 REST 响应(登录提交后),检查该值并对其进行测试。但我想测试 localStorage 的值而不将其写入 DOM。在每次测试之前,我都会清除 localStorage。

browser.executeScript("window.localStorage.clear();");

我可以在测试中获取到值。

var key = browser.executeScript("return window.localStorage.getItem('ngStorage-initKey');")

但这发生得太早了。我还尝试在 browser.wait() 语句中返回该值,但在那种情况下,wait() 似乎无法使用返回值。可能是因为这不是一个 promise 。

如果可以解决这个问题,我什至会考虑让 Protractor 从 ngStorage 访问 $localStorage 实例。

谁能告诉我是否可以使用 Protractor 异步观察 localStorage 值,如果可以,该如何处理?

最佳答案

最终的解决方案是如何处理 browser.executeScript 返回的 promise 。
好消息是:Protractor 已经是异步的,因此不需要自定义等待。但是,您不应该只检查返回值是字符串类型还是等于预期字符串。但是通过正则表达式匹配它工作正常,无论你得到的是字符串还是返回的 promise 。例如,如果我期望一个 40 个字符的散列,你可以这样匹配它:

it('should store key in localStorage when logging in', function() {
loginFormSubmitButton.click();
var newUserKey = browser.executeScript("return window.localStorage.getItem('ngStorage-userKey');");
expect(newUserKey).toMatch(/^\"[a-f0-9]{40}\"$/i);
});

感觉很神奇,但是 expect 语句实际上是在等待 promise 解析。在这种情况下,这意味着对服务器的调用被调用或模拟,结果被写入 localStorage 并由 expect< 检测到 as-it-happen/声明。
无需自定义超时。

关于javascript - Protractor 可以等待 localStorage 更改(由 REST 调用引起)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33347058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com