使用 element by css 检查 Protractor 中是否存在元素
Use element by css to check if element exists in Protractor
在量角器端到端测试中,我想使用 element(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.
之后我尝试使用一个 promise:
element(by.css('.elementClass')).then( functtion(data) {
expect(data.getText()).toBeUndefined();
});
这会导致错误:
Error: No element found using locator By.CssSelector(...)
是的,我知道不会找到任何元素,但我如何使用 element(by.css(...)
) 创建工作测试?
有人知道如何实现吗?还是 element(by.css())
不是这里使用的方法?
您可以测试 element
是否与 isPresent
一起出现。 Here are the protractor docs 用于 isPresent
函数。
因此,您的代码将类似于:
var myElement = element(by.css('.elementClass'));
expect(myElement.isPresent()).toBeFalsy();
您需要测试元素是否不存在:
expect(element(by.css('.elementClass')).isPresent()).toBe(false);
Truthy 和 falsie 是指在被强制转换为布尔值后评估为 true 和 false 的值,除非您希望您的函数 return 不同类型的值。
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")
}
});
相同,但语法不同
let elem = $('.elementClass');
let elemIsPresent = await elem.isPresent();
expect(elemIsPresent).toBe(false);
在量角器端到端测试中,我想使用 element(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.
之后我尝试使用一个 promise:
element(by.css('.elementClass')).then( functtion(data) {
expect(data.getText()).toBeUndefined();
});
这会导致错误:
Error: No element found using locator By.CssSelector(...)
是的,我知道不会找到任何元素,但我如何使用 element(by.css(...)
) 创建工作测试?
有人知道如何实现吗?还是 element(by.css())
不是这里使用的方法?
您可以测试 element
是否与 isPresent
一起出现。 Here are the protractor docs 用于 isPresent
函数。
因此,您的代码将类似于:
var myElement = element(by.css('.elementClass'));
expect(myElement.isPresent()).toBeFalsy();
您需要测试元素是否不存在:
expect(element(by.css('.elementClass')).isPresent()).toBe(false);
Truthy 和 falsie 是指在被强制转换为布尔值后评估为 true 和 false 的值,除非您希望您的函数 return 不同类型的值。
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")
}
});
相同,但语法不同
let elem = $('.elementClass');
let elemIsPresent = await elem.isPresent();
expect(elemIsPresent).toBe(false);