我正在使用量角器在网页上运行基本的健全性测试。
在一页中有五个选项卡,在第三个(index = 2)中有另外三个选项卡。
我已经编写了以下代码,以按顺序浏览每个代码。
if(index!= 1)的原因是该页面加载到第二个标签上。
代码正在合并第二个 if 块中的元素。
但未执行第二个“每个” 命令。
我在这里做错了什么?
我需要浏览器坚持到第三个主选项卡,然后浏览嵌套的选项卡,然后再转到第四个主选项卡。
it('going through the sub tabs in manage page', function(){
expect(element.all(by.css('.settingsTabs li a')).count()).toBe(5);
element.all(by.css('.settingsTabs li a')).each(function(element, index) {
if(index!= 1){
element.click();
browser.driver.sleep(3000);
browser.sleep(3000);
}
if(index == 2){
console.log(element.all(by.css('.ng-isolate-scope ul li a')));
element.all(by.css('.ng-isolate-scope ul li a')).each(function(element1) {
element1.getText().then(function(text) {
console.log(text);
});
});
}
});
});
答案 0 :(得分:0)
我终于明白了。
我犯了两个错误。
一个是定位器,另一个是变量的命名。
由于我嵌套了每个函数,因此必须声明不同的变量名称作为参数。
在我的情况下,我将它们都命名为“ element”,这是所有这些麻烦的根本原因。
固定代码如下:
element.all(by.css('.settingsTabs li a')).each(function(elem, index) {
if(index!= 1){ // here i named the passed argument "elem"
elem.click();
browser.driver.sleep(2000);
}
if(index == 2){
expect(element.all(by.css('.tab-pane li a')).count()).toBe(3);
browser.driver.sleep(2000);
element.all(by.css('.tab-pane li a')).each(function(elemen) { // here it is "elemen"
elemen.click();
browser.driver.sleep(2000);
elemen.getText().then(function(text) {
console.log(text);
});
});
}
if(index == 3){
expect(element.all(by.css('.diagnostic-options li')).isPresent()).toBeTruthy();
}
});