【问题标题】:Using Protractor with angular formly以角度形式使用量角器
【发布时间】:2016-05-10 22:10:48
【问题描述】:

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

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

有没有办法测试 Formly 呈现的表单?

【问题讨论】:

    标签: angularjs protractor angular-formly


    【解决方案1】:

    一种选择是查找所有正式的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");
    

    【讨论】:

    • 抱歉没有工作:) 失败:使用定位器找不到元素:By(xpath, //label[normalize-space(.) = 'Title']/following-sibling::input) 我试过了两种方式,但量角器在页面上找不到元素
    • @vodich 不确定要在此处添加什么。刚刚提供了两个一般性想法,努力使它们在您的特定用例中工作。引发“未找到元素”错误的原因可能有多种 - 检查您使用的元素是否在 iframe 内。看看这是否是时间问题,你需要使用browser.wait()..thanks。
    • 对,可能是时间问题,我明天检查并告诉你。我有一秒钟的停顿,但这可能还不够,因为我的表单相当大并且数据来自不同的服务。
    • 谢谢它的工作我刚刚添加了 browser.waitForAngular()
    猜你喜欢
    • 2018-11-09
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多