javascript - 将每个函数嵌套在量角器中
问题描述
我正在使用量角器在网页上运行基本的健全性测试。
在一页中有五个选项卡,在第三个(索引 = 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);
});
});
}
});
});
解决方案
我最终想通了。
我犯了两个错误。
一个是定位器,另一个是变量的命名。
由于我嵌套了每个函数,我必须将不同的变量名声明为参数。
就我而言,我将它们都命名为“元素”,这是所有这些麻烦的根本原因。
固定代码如下:
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();
}
});
推荐阅读
- python - Python Rolling Spearman Rank Correlation (order rank and value rank) from series
- pandas - 如何根据该行中的单元格数删除一行
- matlab - 如何在 matlab 中使用此代码绘制图形?
- node.js - 递归下载整个 S3 存储桶,节点包装器
- spring-boot - 我如何从外部文件(如 access.properties)获取密码到休眠 Spring Boot 应用程序
- php - 用 Jquery 运行 PHP
- java - 删除实体@OneToMany @ManyToOne。键仍然从表中引用
- reactjs - 在 Slice 中为 redux 添加功能
- xml - 如何将列表(字符串)转换为 XML 文件(Visual Basic)
- image-thresholding - python图像检测阈值错误