1

我是量角器的新手,我想创建一个这样的期望:

expect(elementIsVisible).toBe(true);

我看到量角器有EC (expected conditions),即EC.visibilityOf这似乎是我正在寻找的。但是,我不完全确定会visibilityOf返回什么。

我发现文档非常晦涩:

RETURNS
+-----------+-------------------------------------------------------------------------------------------+
|   Type    |                                        Description                                        |
+-----------+-------------------------------------------------------------------------------------------+
| !function | An expected condition that returns a promise representing whether the element is visible. |
+-----------+-------------------------------------------------------------------------------------------+

它返回什么?一个Promise或一个预期的条件

好吧,考虑到链接.then触发器then is not a function,它似乎返回了预期的条件。但那是什么?

在所有 Protractor 文档示例中,此返回值用于browser.wait函数中。

我不想那样使用它,我想在我的条件下有一个true/false值。expect

如果我尝试从 Selenium 的示例中找到更多信息,Protractor(一个 javascript 实现)会重定向到Java 文档......

4

1 回答 1

1

visibilityOf和所有其他 ExpectedConditions 返回函数。你可以调用这个函数,你会得到Promise<boolean>. 基本上所有 ExpectedConditions 都是谓词 - 函数,当调用 return promise 时解析为布尔值(不应该抛出异常)。所以基本上你可以尝试使用这样的东西:

let shouldBeVisible = protractor.ExpectedConditions.visibilityOf
expect(
    shouldBeVisible($('div.button'))() // Notice () - this where we are manually calling predicate function to get boolean result
).toBeTruthy('Element div.button should be visible');

但幸运的是 - 如果你使用 JasmineJS - 你可以尝试我的 lib 来断言元素的可见性: https ://github.com/Xotabu4/jasmine-protractor-matchers

因此,您不仅会检查元素的可见性,而且 matcher 会自动等待一段时间让元素变得可见。检查这个:

expect($('div.button')).toAppear()

README.MD 中的更多示例

于 2018-04-27T12:23:36.980 回答