我正在使用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(“收件人”)获取文本,而没有其他标签?
您不能使用CSS选择器来执行此操作,因为CSS选择器没有一种足够细粒度的方法来表示“ DIV中包含的文本节点,而不是其其他内容”。不过,您可以使用XPath定位器来做到这一点:
driver.findElement(By.xpath("//div[@id='recipient_div_3']/text()")).getText()
该XPath表达式将 仅 标识作为DIV的直接子级的单个文本节点,而不是其中及其子节点中包含的所有文本。