Webdriver:通过 html 标签查找元素,其中包含属于某个 class 的 html 标签

Webdriver: find element by html tag which contains an html tag which belongs to a certain class

澄清一个非常混乱的标题: 有一段页面代码是这样的(我已经简化了实际代码):

<div class="CLASS1">
  <p>...
  <p>
    <strong>
      <i CLASS2 "></i>
      THE DATA I WANT
    </strong>
  </p>
  <p>...
  <p>...
</div>

我将 Selenium Webdriver 与 Java 一起使用,我一直在尝试获取 "DATA I WANT" 行,但由于它包含在标签之间(而不是 CLASS2 斜体标签),我很难做到这一点。请注意,其余段落(标记为 <p>...)包含类似的结构。 目前,似乎搜索包含 CLASS2 元素 <i> 的 CLASS1 <strong> 标签可能是解决方案,但到目前为止我还无法编写正确的搜索路径。现在我不确定我是否从正确的角度来解决这个问题。 非常感谢任何建议!我想为此找到最短和最可靠的解决方案...

对于您发布的HTML。以下 CSS 选择器应该可以工作。

div.CLASS1 > p:nth-child(2) > strong

如果您需要获取包含 i.CLASS2strong 标签,那么您可以这样做。

// get all p tags
List<WebElement> pTags = driver.findElements(By.cssSelector("div.CLASS1 > p"));

WebElement myWebElement = null;

// iterate and find p tag that contains i.CLASS2
for (WebElement element : pTags) {
    if (element.findElements(By.cssSelector("i.CLASS2")).size() == 1) {
        myWebElement = element.findElement(By.cssSelector("strong"));
        break;
    }
}

// the data you want
System.out.println(myWebElement.getText());