使用 Protractor 访问 $scope 对象

10

我有一个对象如下:

$scope.project = {name: 'whatever', description: 'blabla', another: 'another'};
为了调试这个问题,我进入repl模式并尝试查看"project"有什么。 当我像下面定义project变量并调用它时,它会返回我的对象,但是当我尝试访问它的键(project.name)时,我得到了undefined。如果我执行Object.keys(project),我会得到页面对象的方法,比如click、getAttribute等。 有任何想法如何访问原始对象的键吗? 视图方面:
<h1 id="foo">{{project.name}}</h1>

测试侧:

var project = element(by.id('foo')).evaluate('project');
1个回答

13

evaluate使用executeScript在后台进行操作。它返回一个ElementFinder,该对象解析为您要查找的对象:

evaluate使用executeScript在后台进行操作。它返回一个ElementFinder,该对象解析为您要查找的对象:

var project;
element(by.id('foo')).evaluate('project').then(function(value) {
    project = value;
});

文档中写道:

该方法将解析每个基础元素的求值表达式。结果将如 webdriver.WebDriver.executeScript所示进行解析。简而言之,原始值将按原样解析,函数将被转换为字符串,并将元素作为WebElement返回。

另外,请查看在Protractor测试中访问Angular

编辑:语法错误


1
似乎存在语法错误。应该是element(by.id('foo')).evaluate('project').then(function(value) { project = value; }); - Mahbubur Rahman
value 代表什么? - saruftw
评估使用Promise。该值应在评估“project”后提供返回的数据。 - Sairam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接