刮掉一些数组值以进行断言(量角器)
Scrape off some array values for asserting (Protractor)
有没有办法 刮掉 或删除 element.all 数组返回的随机值或少数值?
我尝试自动化的场景是检查单词 'HTML' 是否应该出现在从数组列表返回的每一行中。
我使用 w3Schools 作为虚拟测试网站来试验我的场景,下面是由于断言而失败的代码。
describe('Searching for word HTML', function() {
var array=[];
var counter=0;
it('Beginning of the test', function() {
browser.ignoreSynchronization = true;
browser.get('https://www.w3schools.com/html/default.asp');
browser.sleep(5000).then(function(){});
var lines = element.all(by.css('#leftmenuinnerinner>a'));
lines.count().then(function(counting){
console.log("There are total "+counting+" links");
counter=counter+counting;
return counting;
})
lines.getText().then(function(text){
console.log("Values:::: "+text);
for(var k=0;k<text.length;k++){
expect(text[k]).toContain('HTML');
}
})
})
})
我知道我可以使用 xpath 值并仅迭代 76 个值的循环,但我正在尝试通过 css 选择器的方法并且我需要严格获取整个值列表,所以是有一种方法我可以 trim 或者通过我的代码从返回的数组中动态删除值 'HTTP Messages','HTTP Methods','PX to EM Converter' & 'Keyboard Shortcuts' 这样我的断言通过 ?
避免 for
循环的最佳方法是 each
。请参阅文档:
http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.each
您可以使用 filter
方法只保留包含您想要的文本的元素。 - http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.filter
lines.filter(function(elem, index) {
return elem.getText().then(function(text) {
return text.includes('HTML');
});
})
或者您可以使用 cssContainingText
定位器来获取所需的元素。 - http://www.protractortest.org/#/api?view=ProtractorBy.prototype.cssContainingText
var lines = element.all(by.cssContainingText('#leftmenuinnerinner>a','HTML'));
有没有办法 刮掉 或删除 element.all 数组返回的随机值或少数值?
我尝试自动化的场景是检查单词 'HTML' 是否应该出现在从数组列表返回的每一行中。
我使用 w3Schools 作为虚拟测试网站来试验我的场景,下面是由于断言而失败的代码。
describe('Searching for word HTML', function() {
var array=[];
var counter=0;
it('Beginning of the test', function() {
browser.ignoreSynchronization = true;
browser.get('https://www.w3schools.com/html/default.asp');
browser.sleep(5000).then(function(){});
var lines = element.all(by.css('#leftmenuinnerinner>a'));
lines.count().then(function(counting){
console.log("There are total "+counting+" links");
counter=counter+counting;
return counting;
})
lines.getText().then(function(text){
console.log("Values:::: "+text);
for(var k=0;k<text.length;k++){
expect(text[k]).toContain('HTML');
}
})
})
})
我知道我可以使用 xpath 值并仅迭代 76 个值的循环,但我正在尝试通过 css 选择器的方法并且我需要严格获取整个值列表,所以是有一种方法我可以 trim 或者通过我的代码从返回的数组中动态删除值 'HTTP Messages','HTTP Methods','PX to EM Converter' & 'Keyboard Shortcuts' 这样我的断言通过 ?
避免 for
循环的最佳方法是 each
。请参阅文档:
http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.each
您可以使用 filter
方法只保留包含您想要的文本的元素。 - http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.filter
lines.filter(function(elem, index) {
return elem.getText().then(function(text) {
return text.includes('HTML');
});
})
或者您可以使用 cssContainingText
定位器来获取所需的元素。 - http://www.protractortest.org/#/api?view=ProtractorBy.prototype.cssContainingText
var lines = element.all(by.cssContainingText('#leftmenuinnerinner>a','HTML'));