angularjs - 涉及 ng-show 的 Protractor 测试

标签 angularjs protractor

我有一个 Angular 页面,它根据单选按钮的值显示或隐藏国家/地区 dropDownList。如果 rb 为真,则隐藏 ddl,如果 ddl 为假,则显示 ddl。这是直接在 ddl HTML 中完成的,将以下属性添加到选择标记:ng-show="!vm.inscriptor.isLocalCountry"

除以下 Protractor 测试外,所有工作都按预期进行:

it(testNumber++ + " ddl de países debería estar oculto", function () {
    pages.register.rbdLocalCountryTrue.click();
    expect(pages.register.ddlCountries.isPresent()).toBeTruthy();
    expect(pages.register.ddlCountries.isDisplayed()).toBeFalsy();
});

正如预期的那样,当单击真值的单选按钮时,ddl 被隐藏,但是“isDisplayed”期望抛出以下错误:

Expected true to be falsy.

我能想到的唯一原因是在点击完成处理之前正在执行 expect 语句。我尝试按照以下方式重构测试:

it(testNumber++ + " ddl de países debería estar oculto", function () {
    pages.register.rbdLocalCountryTrue.click().then(function () {
        expect(pages.register.ddlCountries.isPresent()).toBeTruthy();
        expect(pages.register.ddlCountries.isDisplayed()).toBeFalsy();
    });
});

但我仍然会得到预期的随机结果。

如果我添加 browser.sleep(5000),那么期望的结果会正确显示,但我读过的所有地方都说 browser.sleep 是不得已的技巧。

有没有其他方法告诉 Protractor 等待点击完成处理?还有其他建议吗?

谢谢

最佳答案

您可以使用 browser.wait() 来隐藏 click() 之后的元素。另外,您不需要链接 Click()expect() 的 promise ,因为 Protractor Control Flow 会为您完成

你可以有这样的东西

it(testNumber++ + " ddl de países debería estar oculto", function () {
    pages.register.rbdLocalCountryTrue.click();
    browser.wait(protractor.ExpectedConditions.invisibilityOf(pages.register.ddlCountries), 10000);
    expect(pages.register.ddlCountries.isPresent()).toBeTruthy();
    expect(pages.register.ddlCountries.isDisplayed()).toBeFalsy();
});

关于angularjs - 涉及 ng-show 的 Protractor 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41989473/

相关文章:

javascript - 如何将 'select' 选项正确绑定(bind)到 API 调用?

angularjs - Angular $resource 和 OData 字符串,例如 $skip

angularjs - 使用全局权限服务检查 ng-disabled 或 ng-hide

javascript - HTML加载后编译JS

javascript - Protractor 断言元素不可见

javascript - 模块误差 Angular 1.5

javascript - 我们可以在运行时更改 Protractor 配置文件中定义的参数值吗

selenium-webdriver - 如何使用 NodeJS - Protractor 从 Excel 读取/写入 Excel?

node.js - 安装 elementor 时出错

javascript - 自定义 ESLint 规则中的异步代码