【发布时间】:2017-12-02 00:14:52
【问题描述】:
更新
我正在使用:
- 硒 2.53.1
- Firefox 和 IE11
我一直在尝试用相同的选择器点击所有元素,例如,我想点击标题为"What I Want"的所有元素:
<div id="first_question">
<a class="gibberish1" title="What I Want"></a>
<a class="gibberish2" title="What I Want"></a>
<a class="gibberish3" title="What I Want"></a>
</div>
这是我目前所做的工作:
browser.findElements(by.xpath("//a[@title='What I Want']")).then(function(all_tests){
for (var i = 0; i < all_tests.length; i++) {
console.log(all_tests.length);
all_tests[i].click();
}
});
它能够识别出我有三个元素,如果我直接调用每个元素,那么我可以看到它点击按钮。但是,当我想循环点击每个按钮时,我得到一个错误:
“StaleElementReferenceError:元素不再附加到 DOM。”
我还添加了 5 秒的等待时间,但这并没有阻止弹出相同的问题。
我做错了什么?我是 Selenium 的新手,我正试图用 Javascript 来解决这个问题,而不是 Java,这是我在这种情况下找到的示例。
【问题讨论】:
-
我不使用 javascript,所以我不知道语法,但最后一次尝试使用
for循环看起来最接近。问题是您正在单击一个集合,而不仅仅是一个元素。在您的for循环中,您需要类似all_tests[i].click()的内容,因此您单击循环实例。 -
嗨@JeffC,你是对的。我把它改成了。只是现在我收到了我在下面评论过的 StaleElementError 问题,我正在努力解决这个问题。
-
我认为首先打印 all_tests,检查输出,for 循环中的更改可以工作............ ................. 对于 all_tests 中的元素: element.click() .................................. ..并处理 StaleElementReferenceError,可以在这里查看:stackoverflow.com/questions/27003423/…
标签: javascript selenium selenium-webdriver