SeleniumWebDriver(Java)-从css选择器中排除特定标记

SeleniumWebDriver(Java)-从css选择器中排除特定标记,java,selenium,selenium-webdriver,css-selectors,Java,Selenium,Selenium Webdriver,Css Selectors,如何从css选择器中排除标记。我有一个html代码如下: <div class="info"> <h3>Test 1</h3> John Smith </div> 是否可以使用css选择器仅获取John Smith?这是selenium的一个“经典”问题,因为css选择器或xpath表达式必须始终引用实际元素-您无法直接获取文本节点 您可以在这里做的是: 获取div元素的文本 获取h3元素的文本 从div元素的文本中删除h3元素

如何从css选择器中排除标记。我有一个html代码如下:

<div class="info">
    <h3>Test 1</h3>
    John Smith
</div>
是否可以使用css选择器仅获取John Smith?

这是selenium的一个“经典”问题,因为css选择器或xpath表达式必须始终引用实际元素-您无法直接获取文本节点

您可以在这里做的是:

  • 获取
    div
    元素的文本
  • 获取
    h3
    元素的文本
  • div
    元素的文本中删除
    h3
    元素的文本
实施:

String div = new WebDriverWait(Login.driver, 100).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".info"))).getText();
String h3 = div.findElement(By.tagName('h3')).getText();
String txtFix = div.replace(h3, '');

如果使用以下命令获取文本:

driver.findElement(By.cssSelector(".info")).getText();
Test 1
John Smith
String text = driver.findElement(By.cssSelector(".info")).getText().split("\n")[1];
它返回以下结果:

driver.findElement(By.cssSelector(".info")).getText();
Test 1
John Smith
String text = driver.findElement(By.cssSelector(".info")).getText().split("\n")[1];
如果您正确地看到,在
测试1
之后,引入了char
\n
,因此
John Smith
在另一行

因此,如果您只想检索
John Smith
,可以使用
split
实现,如下所示:

driver.findElement(By.cssSelector(".info")).getText();
Test 1
John Smith
String text = driver.findElement(By.cssSelector(".info")).getText().split("\n")[1];