我无法在量角器和茉莉花中使用IF和EXPECT

时间:2019-07-16 19:16:35

标签: typescript protractor e2e-testing browser-automation

这是一种情况。

if (await browser.wait(ExpectedConditions.presenceOf(this.collapsedContinent), 500)) {
            await this.helper.click(this.expandCountry);
            await this.helper.click(this.chkcountry);
        } else {
            await this.helper.click(this.chkcountry);
        }

我期望我的期望返回true或false,然后执行后续操作。看起来我在这里做错了。

我知道期望返回一个承诺,但是无论如何,我可以期望期望返回一个真假,然后从那里走吗?

我也可以使用其他方法,只要它检查元素的存在即可。我正在使用异步等待,所以我不需要doThis.then(doThat);

我完全想避免使用.then()

2 个答案:

答案 0 :(得分:1)

您应该使用isPresent()方法来实现以下流程,因为现在else条件永远不会发生。

如果DOM中没有元素,则presenceOf将在500毫秒后失败。

解决方案:

    if (await this.collapsedContinent.isPresent()) {
      await this.helper.click(this.expandCountry);
      await this.helper.click(this.chkcountry);
    } else {
      await this.helper.click(this.chkcountry);
    }

答案 1 :(得分:0)

或者,如果您确实需要等待检查,则browser.wait不会返回true / false,但是您可以使用.then来实现:

if (await browser.wait(ExpectedConditions.presenceOf(this.collapsedContinent), 500).then(()=> true, err=> false)) {
    await this.helper.click(this.expandCountry);
    await this.helper.click(this.chkcountry);
} else {
    await this.helper.click(this.chkcountry);
}