【问题标题】:Why do I have to add + i + into the second WebElement in Selenium Java loop?为什么我必须将 + i + 添加到 Selenium Java 循环中的第二个 WebElement 中?
【发布时间】:2015-09-17 14:07:46
【问题描述】:

在Selenium Java中我经常写For Loop的,为什么一定要在第二个WebElement中加上+ i +,请看附件示例

for (int i = 1; i <= secondaryLinks.size(); i++){
    WebElement links = driver.findElement(By.cssSelector(".FeatureHighlight .el:nth-of-type("+ i +") a"));
    // ...
}

【问题讨论】:

  • 它是一个索引 - 它找到与选择器匹配的 nth 元素。
  • 如果问题不在标题中会有所帮助。
  • 非常混乱的标题
  • 抱怨标题中的问题的人有能力解决它。他们的建设性如何。
  • @Archer 如果他们不发表评论/抱怨,那么 OP 就不会知道这是一个措辞不当的问题。 IMO,OP 应该负责提出自己的问题......但这只是我。

标签: javascript java selenium for-loop selenium-webdriver


【解决方案1】:

不需要带有索引的循环。您可以通过使用findElements() 并在具有FeatureHighlight 类的元素内部迭代具有el 类的元素(.FeatureHighlight .el CSS 选择器)来接近它。对于找到的每个元素,按标签名称查找内部链接。

示例实现:

List<WebElement> elements = driver.findElements(By.cssSelector(".FeatureHighlight .el"));
for (WebElement element: elements) {   
    WebElement link = element.findElement(By.tagName("a"));
    // ...
}

【讨论】:

  • 感谢您的帮助 Alecxe,上面的 for each 循环非常适合仅找到一个元素,但我需要找到多个元素,例如标题。段落文本等等。所以 for each 是行不通的。我最大的疑问是为什么我在 css 选择器中需要 + i +。
  • @Littlen 我仍然不确定为什么 for each 不起作用,您可以使用element WebElement 来查找标题、段落等内部元素。您能否发布页面的 HTML 代码和你想要的结果?
  • 感谢您的帮助,但我的问题现已得到解答。
  • 由于我客户的敏感性,我无法共享 HTML。 ` for (int i = 0; i
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多