我是量角器的新手,我想创造一个这样的期望:
expect(elementIsVisible).toBe(true);
我看到量角器有EC (expected conditions),即EC.visibilityOf
,这似乎是我正在寻找的。但是,我并不完全确定visibilityOf
返回的内容。
我发现the docs非常模糊:
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 documentation ......
答案 0 :(得分:1)
visibilityOf
和所有其他ExpectedConditions返回函数。您可以调用此函数,然后获得Promise<boolean>
。基本上所有ExpectedCondition都是谓词 - 函数,当调用返回promise时解析为boolean(应该不会抛出异常)。所以基本上你可以尝试使用这样的东西:
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中的更多示例