使用css元素检查Protractor中是否存在元素

Mic*_*iel 42 angularjs protractor e2e-testing

在量角器端到端测试中,我想检查一个元素是否存在使用元素(by.css(...)),我的代码:

var myElement = element(by.css('.elementClass'));
expect(myElement).toBeUndefined;
Run Code Online (Sandbox Code Playgroud)

该测试失败,它说:

    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.
Run Code Online (Sandbox Code Playgroud)

之后我尝试使用一个承诺:

element(by.css('.elementClass')).then( functtion(data) {
    expect(data.getText()).toBeUndefined();
});
Run Code Online (Sandbox Code Playgroud)

这会导致错误:

var myElement = element(by.css('.elementClass'));
expect(myElement).toBeUndefined;
Run Code Online (Sandbox Code Playgroud)

是的,我知道不会找到任何元素,但是如何使用element(by.css(...))创建工作测试?

有谁知道如何实现这一目标?或者是元素(by.css())不是在这里使用的方法?

Dav*_*yon 92

你可以测试它是否element存在isPresent. 以下是isPresent函数的量角器文档.

所以,你的代码将是这样的:

var myElement = element(by.css('.elementClass'));
expect(myElement.isPresent()).toBeFalsy();
Run Code Online (Sandbox Code Playgroud)


JB *_*zet 24

您需要测试元素是否不存在:

expect(element(by.css('.elementClass')).isPresent()).toBe(false);
Run Code Online (Sandbox Code Playgroud)

  • 因为isPresent被量角器添加为**原型**.您在错误消息中看到的那些继承自webdriver**作为元素的属性**.默认情况下,console.log和throws不会显示原型 (2认同)