我是WebDriver(chromedriver)的新手,只有javascript语法的超级基础知识,所以如果我的代码看起来像意大利面,我很抱歉。
我有一个clickAllElements();
函数,可以查找类中的所有元素并单击它们。
//Click every element of an array
var clickAllElements = function (el, screenShot){
//Store elements in an array
var findElements = driver.findElements(By.css(el));
findElements.then(function (options) {
//Then iterate through array
options.map(function (elem) {
//Click on each item in the array
return elem.click().then(function() {
//Then get the text content inside each element
driver.sleep(5000);
elem.getText().then(function(text){
//Log the text to the console.
console.log(" - Selecting " + text.trim());
driver.sleep(2000);
if (screenShot) {
takeScreenShot(text);
}
});
});
});
});
}
这个工作正常,但现在我有以下三个要素。
以下是Chrome检查器中显示的html / css
我希望我的clickAllElements();
函数单击每个值上的x,以便删除它们。当我clickAllElements('.token > a');
时它实际上删除了第一个,但之后我得到一个"陈旧元素引用:元素没有附加到页面文档。"我不理解错误,因为那些元素显然存在。我怎么能绕过这个? (最好使用javascripit解决方案);
答案 0 :(得分:2)
有两种可能性:
elem.getText().then(function(text)
在这种情况下,您只需要在delete
链接的情况下不要进一步引用该对象。向此函数添加参数,或者更好的是,创建另一个参数以删除所有链接。
您也可以通过编写另一个函数来解决这个问题,但在这种情况下,您还可以重新编写函数以按索引遍历每个元素,每次单击后刷新元素列表并从中获取文本由index指定。