Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Protractor 量角器测试:browser.get清除会话存储_Protractor - Fatal编程技术网

Protractor 量角器测试:browser.get清除会话存储

Protractor 量角器测试:browser.get清除会话存储,protractor,Protractor,我的量角器测试有一个很奇怪的问题。我正试图直接在sessionStorage上设置正确的凭据,但身份验证服务没有接收到它。我已将其隔离到以下脚本: describe('The search', () => { beforeAll(() => { browser.executeScript(() => { window.sessionStorage.setItem('something', JSON.stringify({"test

我的量角器测试有一个很奇怪的问题。我正试图直接在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)
1)更改URL时搜索工作正常
信息:
“{”test“:“test”}”应为空。
堆栈:
错误:预期失败
反对。(/source/search.spec.ts:12:25)
在进程中调用(node.js:368:9)
如您所见,只要调用
browser.get()
,会话存储就会被清除。有人知道为什么会发生这种情况吗?

导航到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);
    });
});
导航到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部分之后添加一个额外的
浏览器。get('/')
,这样引导脚本就可以获取凭据并将我转发到索引页而不是登录页。这确实起到了作用。我不得不在executeScript部分之后添加一个额外的
浏览器.get('/')
,这样引导脚本就可以在凭据上找到我,并将我转发到索引页而不是登录页。