在 AngularJS 应用程序的量角器测试中访问 localStorage

Posted

技术标签:

【中文标题】在 AngularJS 应用程序的量角器测试中访问 localStorage【英文标题】:Accessing localStorage in Protractor test for AngularJS application 【发布时间】:2014-03-24 12:17:38 【问题描述】:

我正在编写一些测试来验证输入数据是否正确存储在本地存储中,如何从量角器测试中访问 localStorage?

...
describe('vgPersist', function() 
  it('Should save input data in local storage until form submitted', function() 
    // Prepare Object and Open browser
    var addOns = new AddOns();
    addOns.get();

    -> Clear localStorage
    -> Get from localStorage

你如何使用executeScript?我可以从 executeScript 中获取数据吗?

【问题讨论】:

扎克,我可以在答案中添加或改进什么,以便我们解决该主题并将答案标记为已接受?谢谢! 【参考方案1】:

从本地存储中获取项目,请使用 window.localStorage.getItem()executeScript()

var value = browser.executeScript("return window.localStorage.getItem('key');");
expect(value).toEqual(expectedValue);

清除本地存储调用clear()

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

为方便起见,我们还可以在本地存储周围使用这个辅助对象/包装器:

"use strict";

var LocalStorage = function () 
    this.getValue = function (key) 
        return browser.executeScript("return window.localStorage.getItem('" + key + "');");
    ;

    this.get = function () 
        browser.executeScript("return window.localStorage;");
    ;

    this.clear = function () 
        browser.executeScript("return window.localStorage.clear();");
    ;
;

module.exports = new LocalStorage();

【讨论】:

出于某种原因,getItem 的两种方法都检索了一个未定义的对象,无论如何,在我清楚地将值插入本地存储之后。这是否已经被弃用(量角器 3.3、茉莉花 2.4、角度 1.5.6)?

以上是关于在 AngularJS 应用程序的量角器测试中访问 localStorage的主要内容,如果未能解决你的问题,请参考以下文章

如何在angularjs e2e量角器测试中上传文件

如何在非 angularjs 网站上使用量角器?

使用量角器显示测试结果摘要

在使用 angularjs 的 selenium 服务器的量角器中做一些事后描述

使用 ngStorage 进行量角器测试

从量角器中的json文件中获取数据