gpt4 book ai didi

angularjs - 涉及 ng-show 的 Protractor 测试

转载 作者:行者123 更新时间:2023-12-02 03:07:09 31 4
gpt4 key购买 nike

我有一个 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com