【问题标题】:Protractor test: browser.get clears sessionStorage量角器测试:browser.get 清除 sessionStorage
【发布时间】:2016-11-15 23:59:25
【问题描述】:

我的量角器测试遇到了一个非常奇怪的问题。我正在尝试直接在 sessionStorage 上设置正确的凭据,但身份验证服务没有接受它。我已将其隔离为以下脚本:

describe('The search', () => {
    beforeAll(() => {
        browser.executeScript(() => {
            window.sessionStorage.setItem('something', JSON.stringify({"test":"test"}));
        });
    });

    it('works when changing URL', () => {
        var result1 = browser.executeScript('return window.sessionStorage.getItem(\'something\')');
        browser.get('/');
        var result2 = browser.executeScript('return window.sessionStorage.getItem(\'something\')');
        expect(result1).toBe(result2);
    });
});

输出:

1) The search works when changing URL
  Message:
    Expected '{"test":"test"}' to be null.
  Stack:
    Error: Failed expectation
        at Object.<anonymous> (/source/search.spec.ts:12:25)
        at process._tickCallback (node.js:368:9)

如您所见,只要调用browser.get(),sessionStorage 就会被清除。有谁知道为什么会发生这种情况?

【问题讨论】:

    标签: protractor


    【解决方案1】:

    导航到 URL 并然后设置本地存储项对我有用:

    describe('The search', function () {
        var value = JSON.stringify({"test":"test"});
    
        beforeAll(function () {
            browser.get('/');
            browser.executeScript(function (value) {
                window.sessionStorage['something'] = value;
            }, value);
        });
    
        it('works when changing URL', function () {
            var result = browser.executeScript('return window.sessionStorage.getItem(\'something\');');
            expect(value).toEqual(result);
        });
    });
    

    【讨论】:

    • 这确实成功了。我必须在 executeScript 部分之后添加一个额外的browser.get('/'),以便引导脚本可以获取凭据并将我转发到索引页面而不是登录页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多