javascript - Protractor - 如何从中继器而不是元素获取实际值?

标签 javascript angularjs testing protractor end-to-end

我正在创建一个 Protractor 脚本来测试我的问答游戏,该游戏会提供随机问题和答案,因此我需要我的脚本能够确定哪个答案是正确的,以便我可以点击它。

我不知道如何直接从模型而不是元素获取值,因为正确/不正确不会作为页面上的元素公开。

该模型在 Question.Choices 中的 Choice 中提供答案,我需要找到 Choice.IsCorrect 为真的 Choice。我如何获得此值?

我不会使用 element() 函数,对吧?

element(by.repeater('Choice in Question.Choices').row(0).column('Choice.IsCorrect'))

最佳答案

想法是使用element.all()连同filter()evaluate() :

var correctChoices = element.all(by.repeater('Choice in Question.Choices')).filter(function (elm) {
    return elm.evaluate('Choice.IsCorrect').then(function (value) {
        return value;
    });
});

因此 correctChoices 将包含 Choice.IsCorrect 为真的元素。


如果您需要获取正确选择的值数组,请使用 map()getAttribute() :

correctChoices.map(function (elm) {
    return elm.getAttribute('value');
});

或者,如果您需要文本,请使用 getText() :

correctChoices.map(function (elm) {
    return elm.getText();
});

关于javascript - Protractor - 如何从中继器而不是元素获取实际值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29174754/

相关文章:

javascript - AngularJS Controller 未显示结果

javascript - 单击单选按钮时如何启用文本字段

javascript - Chartjs 悬停在一个图表上,显示所有图表的工具提示

javascript - 从 AngularJS API 服务返回一个值给 Controller

php - 测试 Laravel 服务提供者

resharper - 如何安装 MSpec BDD 框架?

javascript - 将 html 标签插入到替换函数中

javascript - 在javascript中设置屏幕保护程序的超时时间

Javascript Promise - fonfaceobserver + 变量

unit-testing - 如何为一个测试方法运行多个测试用例