angularjs - 正确使用 Protractor

标签 angularjs protractor angular-formly

我有一个使用正式形式的 Angular 项目 http://angular-formly.com/#/并希望使用 Protractor 添加一些端到端测试.

我无法通过模型选择元素,因为表单字段是在代码中定义的,而不是在模板中定义的,当它们被渲染时,它们会得到不同的 ng-model 并且我不想添加特定的类,因为我有很大的类表格。

有没有办法做到这一点并测试 Formly 呈现的表单?

最佳答案

一种选择是查找所有形式的input元素,evaluate模型值和 filter :

var formlyInputs = $$("input");

var desiredModel = "modelName";
var desiredInput = formlyInputs.filter(function (input) {
    return input.evaluate("model[options.key]").then(function (model) {
        return model === desiredModel; 
    });
}).first();

desiredInput.sendKeys("some text");

您可能需要对其进行扩展,以不仅支持 input 元素,还支持表单可能具有的其他表单元素。

<小时/>

另一种解决方案是依赖输入的前面标签:

var label = "Text";

var desiredInput = element(by.xpath("//label[normalize-space(.) = '" + label + "']/following-sibling::input"));
desiredInput.sendKeys("some text");

关于angularjs - 正确使用 Protractor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37149822/

相关文章:

javascript - 为什么 AngularJS 默认事件指令使用 `compile` 方法而不是 `link` 来读取属性?

node.js - 在 TFS 上构建想要从 Node.js 测试项目复制可执行文件

javascript - Angular-Formly:在多个指令中与多个表单交互

javascript - 自定义 DatePicker Angular Formly 字段不会出现验证错误消息

javascript - 尝试使用 Angular 交换 ng-click 和 ng-class 上的类时图像消失

javascript - 状态更改时 URL 不更新

node.js - 带 Protractor 的 Sauce Labs,URI 格式错误

angularjs - 如何在新行上打印输出?

angularjs - 如何将 2 个模型绑定(bind)到 Angular 中的一个输入字段?

javascript - 用于测试 AngularJS 的 Protractor