在量角器端到端测试中,我想检查一个元素是否存在使用元素(by.css(...)),我的代码:
var myElement = element(by.css('.elementClass'));
expect(myElement).toBeUndefined;
此测试失败,它说:
Expected { locator_ : { using : 'css selector', value : 'div[ng-switch-
when="resultNav"]' }, parentElementFinder_ : null, opt_actionResult_ :
undefined, opt_index_ : undefined, click : Function, sendKeys : Function,
getTagName : Function, getCssValue : Function, getAttribute : Function, getText
: Function, getSize : Function, getLocation : Function, isEnabled : Function,
isSelected : Function, submit : Function, clear : Function, isDisplayed :
Function, getOuterHtml : Function, getInnerHtml : Function, toWireValue :
Function } to be undefined.
之后我尝试使用诺言:
element(by.css('.elementClass')).then( functtion(data) {
expect(data.getText()).toBeUndefined();
});
这会导致错误:
Error: No element found using locator By.CssSelector(...)
是的,我知道不会找到任何元素,但是如何使用element(by.css(...))创建工作测试?
有谁知道如何实现这一目标?或者是元素(by.css())不是在这里使用的方法?
答案 0 :(得分:87)
您可以测试element
是否存在isPresent
。 isPresent
函数的Here are the protractor docs。
所以,你的代码应该是这样的:
var myElement = element(by.css('.elementClass'));
expect(myElement.isPresent()).toBeFalsy();
答案 1 :(得分:23)
您需要测试元素是否不存在:
expect(element(by.css('.elementClass')).isPresent()).toBe(false);
答案 2 :(得分:2)
相同的东西,但语法不同
let elem = $('.elementClass');
let elemIsPresent = await elem.isPresent();
expect(elemIsPresent).toBe(false);
答案 3 :(得分:1)
Truthy和falsie指的是强制转换为布尔值后评估为true和false的值,除非您希望函数返回不同类型的值。
var myElement = element(by.css('.elementClass'));
myElement.isPresent().then(function (elm)
{
if (elm)
{
console.log("... Element was found")
expect(myElement.getText()).toBeUndefined();
} else {
console.log("... Element was not found")
}
});