如何遍历页面上具有特定类名的元素并单击它们?我试过使用
browser.elements('css selector', element.articleItemTitle,function (links) {
for (var i=0; i < links.value.length; i++) {
browser.waitForElementVisible('body');
browser.pause(1000);
browser.elementIdClick(links.value[i].ELEMENT);
browser.waitForElementVisible('.article-detail');
browser.expect.element(element.postHeroTitle).to.be.present;
browser.back();
}
});
但它并不总是在每次遍历循环时单击指定的元素。
我得到错误:陈旧元素引用:元素未附加到页面文档
用守夜人
我也遇到过类似的问题并能够解决它。我在这里发布了示例代码。这只是我们可以做的一个示例。请根据您的情况调整相同的。
您不能在迭代来自另一个页面的元素列表(链接
)时更改DOM(例如通过加载新页面)。一旦您更改页面,您就有使列表无效的风险,在这种情况下,下次循环时您会收到该错误。
不要将元素仅仅看作属性的集合,而应将其看作是真实浏览器中真实数据页面的“代理”对象。它们只在当前页面上有用,不能被玩弄。
至于解决方案,在您的情况下,您从链接
元素中使用的唯一东西似乎是Id,它只是一个无害的字符串。因此,与其遍历匹配的元素,不如先构建所有Id字符串的列表,然后遍历它。这应该是您唯一需要的更改。
更新:
示例代码(未经测试,也不是优雅的JavaScript,但很可能工作,并演示了概念):
var ids = {};
// build the list of matching Ids on current page
browser.elements('css selector', element.articleItemTitle,function (links) {
ids.push(links.value[i].ELEMENT);
});
// Try each one in turn - note *no references* held to existing page
for (var i = 0; i < ids.length; i++) {
browser.waitForElementVisible('body');
browser.pause(1000);
browser.elementIdClick(ids[i]);
browser.waitForElementVisible('.article-detail');
browser.expect.element(element.postHeroTitle).to.be.present;
browser.back();
}
问题内容: 我需要一些帮助。有URL:https : //www.inipec.gov.it/cercapec/-/pecs/companies。我需要单击复选框验证码:在此处输入图片说明 我的代码如下所示: During the execution, there is an error: driver.find_elements_by_xpath(‘//*[@id=”recaptcha- anc
我的代码如下所示: 在执行过程中,出现错误: driver.find_elements_by_xpath('//*[@id=“recaptcha-anchor”]/div1').click()attributeerror:“list”对象没有属性“click” 拜托,帮忙修一下。
我想点击element with href删除FB组中的挂起的帖子,但是selenium在第二个之后崩溃。使用相同的循环,我可以添加帖子到组没有任何问题;“Delete Button”列表是有效的,因为当我尝试时,我会得到真实的位置。 线程“main”org.openqa.selenium.elementNotinteractableException:构建信息:版本:'3.4.0',修订:'un
我试图使用Selenium来单击::after伪元素。我意识到这无法通过WebDriver直接实现,但似乎无法找到一种使用Javascript实现的方法。 下面是DOM的外观: 上面的元素是这样的。对象的左边是按钮元素,后面的:元素是右边,箭头在单击时会下拉框。正如你所看到的,右边没有任何标识符,这就是为什么很难做到这一点的部分原因。 我在stackoverflow中看到了这两个链接,并试图将答案
我正试图点击一个硒元素。它是一个复选框,包含以下HTML代码: 包含复选框和术语的段落代码: 我尝试过三种不同的方法,但都不奏效: 请帮助解决其他问题。
如何使用selenium Python从主机A(在本例中为jsfiddle.net)单击此处的红色按钮?(java脚本限制策略错误,不让我去做)。我也不想直接点击红色按钮。谢了。