Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 量角器&x27;对于';循环不';不为所有索引执行操作_Javascript_Loops_Protractor_Elements - Fatal编程技术网

Javascript 量角器&x27;对于';循环不';不为所有索引执行操作

Javascript 量角器&x27;对于';循环不';不为所有索引执行操作,javascript,loops,protractor,elements,Javascript,Loops,Protractor,Elements,我使用量角器测试web应用程序,但当我使用for循环导航“删除”元素(按钮)时,它不能正常工作 这里是我的stepdefinition.js: let remove = element.all(by.css('a[class="product__cta"]')); remove.count().then(function(val){ for(let i=0; i<val; i++){ console.log('i is= ', i);

我使用量角器测试web应用程序,但当我使用for循环导航“删除”元素(按钮)时,它不能正常工作

这里是我的stepdefinition.js:

let remove = element.all(by.css('a[class="product__cta"]')); 
    remove.count().then(function(val){
        for(let i=0; i<val; i++){
            console.log('i is= ', i);
            browser.driver.sleep(1000);
            remove.get(i).click().perform;
            browser.driver.sleep(5000);
        }
    })
        browser.sleep(5000);
        let empty_title = element(by.css('.empty-title'));
        empty_title.getText().then(function(value){
            console.log('empty title: ', value);
        })
    expect(element(by.css('.empty-container')).isPresent()).to.eventually.be.true.and.notify(next);
有5个“product_u cta”,而不是错误消息中提到的2个,单击移除按钮仅适用于五个元素中的三个,顺序如下:

第一个el:已删除 第二个el:未点击 第三个el:已删除 第四个el:未点击 第五个el:删除

为什么会有这种行为?我能做些什么来获取for循环中的所有元素并删除其元素? 请不要告诉我只有2个元素与locator By(css selector,a[class=“product\uu cta]”匹配,因为我仍在浏览页面,其中有5个元素。 PS:空容器仅在单击每个删除项目后显示


谢谢你的帮助

删除循环中的元素。删除三个元素时,只剩下两个。但您想删除索引为3的元素,因此出现了一个错误。换一行就行了

remove.get(i).click().perform;
为此:

remove.first().click().perform;

尝试添加
browser.sleep(10000)
before
remove.count()。然后(…
。似乎您的代码在页面初始打开时发现了5个匹配的元素,但只要页面加载,匹配的元素就会减少到2个。因此报告索引超出范围。需要等待页面加载完成,然后再对匹配的元素进行计数。
remove.first().click().perform;