通过部分链接文本Selenium循环遍历元素列表

时间:2017-04-28 14:50:15

标签: javascript arrays selenium selenium-webdriver selenium-chromedriver

我被困在调查和改进方面需要帮助。

我正在尝试将所有<a>标记与年度报告一起收集为partial text,然后循环,因为它们最初位于在表格内(2nd column per row)。

以下是我计划执行的流程

  • 点击<a>代码后,新窗口将pop up
  • 在新窗口中查找并获取特定值
  • 关闭窗口
  • 移至下一个元素(<a>标记)并重复

下面的代码是我当前的进度,但它完全不起作用。我仍然无法点击第一个元素。

var reportLinks = driver.findElements(By.partialLinkText('Annual Report'));

for(var i = 0; i < reportLinks.length; i++){
    reportLinks[i].click();
}

2 个答案:

答案 0 :(得分:0)

这就是我如何完成这个

//This will get you how many elements are present
var reportLinks = driver.findElements(By.xpath('//tr/td/a[contains(text(),'Annual Report')]'));

//This will click on each element
for(var i = 0; i < reportLinks.length; i++){
driver.findElement(By.xpath('//tr[' + i + ']/td/a[contains(text(),'Annual Report')]')).click();
}

原因是Annual Report元素不是元素的父容器。

答案 1 :(得分:0)

我能够使用以下代码使其工作:

for (var i = 1; i < 51; i++) { 

    var element = driver.findElement(By.xpath('//*[@id="dataList"]/table/tbody/tr[' + i + ']/td[1]/a'));
    driver.executeScript("arguments[0].click();", element);

}

我只是通过copied the xpath Google Chrome's功能在页面上Inspect Element,并通过argument传递executeScript

您可以通过此链接了解如何:Is there a way to get the xpath in google chrome?

非常感谢!