涉及ng显示的白内障测试



我有一个有角度的页面,它根据radioButton的值显示或隐藏国家下拉列表。如果rb为true,则ddl被隐藏,如果ddl为false,则显示ddl。这是直接在ddl HTML中完成的,在select标记中添加以下属性:ng-show="!vm.inscriptor.isLocalCountry"

除以下量角器测试外,所有工作均符合预期:

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();
});

正如预期的那样,当单击true值的单选按钮时,ddl将被隐藏,但是"isDisplayed"预期会引发以下错误:

期望true为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.seep是最后的手段。

有没有其他方法可以告诉量角器等待点击完成处理?还有其他建议吗?

Thx

您可以使用browser.wait()将元素隐藏在click()之后。此外,您不需要像Protractor Control Flow为您所做的那样,将Click()expect()的承诺连锁起来

你可以有这样的

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();
});

最新更新