javascript - 如何等待 Protractor 中的按钮禁用状态?

标签 javascript angularjs jasmine protractor

下面的代码等待元素出现:

    var elm = element(by.css('button.submit'));

    var EC = protractor.ExpectedConditions;
    browser.wait(EC.presenceOf(elm), 5000);
    elm.click();

检查按钮是否已启用并且可用于单击的代码:

    expect(elm.isEnabled().toBe(false));

在我的情况下,表单验证执行得太快。这样按钮的启用和禁用有点慢。无法捕获元素的状态。上述两个条件都无法检查按钮是否被禁用。

除了使用 browser.sleep(1000) 之外,如何检查按钮禁用状态

最佳答案

就我而言,我创建了一个新的递归函数来识别它是否已启用/存在。

function checkIfDisabled(maxSec, elm, blnDisabled) {
    if (maxSec > 0) {
        browser.sleep(1000).then(function() {
            elm.isDisabled().then(function(bln) {
                if (bln != blnDisabled) {
                    checkIfDisabled(maxSec - 1, elm, blnPresent)
                }
            });
        });
    }
}

如果通过 checkIfDisabled(10, elm, false)
它将以 1 秒的间隔检查对象是否被禁用 10 次。
希望能帮助到你。 :)

关于javascript - 如何等待 Protractor 中的按钮禁用状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43601632/

相关文章:

javascript - jQuery:从 <tr> 中拆分 <td>

javascript - 启用 CORS AngularJS 发送 HTTP POST 请求

jasmine - Webstorm Jasmine 集成 - JSHint 不识别 jasmine

javascript - 当我运行我为移动网站(Angular)编写的 Protractor 脚本时,Chrome 和模拟器都会自动关闭

javascript - HTML DOM 如何优化这段代码?

javascript - 表达如何在静态文件夹中使用 Import/require()

javascript - AngularJS - 从数组中获取最后一个空白元素的索引

javascript - 通过 Angular UI 模式更新复杂模型时遇到问题

javascript - PositionError 网络位置提供程序位于 'https://www.googleapis.com/' : Returned error code 404

angular - 测试 Angular2/Jasmine 中的选择输入更改