一尘不染

Selenium:在Java中使用cssSelector提取div的文本

selenium

我正在使用Selenium为网页编写JUnit测试,并且试图验证页面中是否存在预期的文本。我正在测试的网页代码如下所示:

<div id="recipient_div_3" class="label_spacer">
   <label class="nodisplay" for="Recipient_nickname"> recipient field: reqd info </label>
   <span id="Recipient_nickname_div_2" class="required-field"> *</span>
   Recipient:
</div>

我想将预期的内容与页面上的内容进行比较,因此我想使用Assert.assertTrue()。我知道要从div获得一切,我可以

String element = driver.findElement(By.cssSelector("div[id='recipient_div_3']")).getText().replaceAll("\n", " ");

但这将返回“必填信息*收件人:”

有没有办法使用cssSelector从div(“收件人”)获取文本,而没有其他标签?


阅读 879

收藏
2020-06-26

共1个答案

一尘不染

您不能使用CSS选择器来执行此操作,因为CSS选择器没有一种足够细粒度的方法来表示“
DIV中包含的文本节点,而不是其其他内容”。不过,您可以使用XPath定位器来做到这一点:

driver.findElement(By.xpath("//div[@id='recipient_div_3']/text()")).getText()

该XPath表达式将 标识作为DIV的直接子级的单个文本节点,而不是其中及其子节点中包含的所有文本。

2020-06-26