节点之间的Xpath值

时间:2015-10-29 05:45:28

标签: java selenium xpath

我试图找出xpath节点之间的值。我已经尽了最大努力,但无法使用Xpath来定位该值。



<span class="passwordmessage" id="PasswordMessage" name="PasswordMessage"></span>
<br class="">
<br class="">
<span class="">The users new password is: </span>
"7b8rzyx
            
			"
<br class="">
&#13;
&#13;
&#13;

我想从代码中捕获 7b8rzyx 值。 我试过了: follow-sibling :: node(),preceding-sibling :: br但是却无法得到它。

任何帮助表示赞赏!

[编辑] 到目前为止我已达到: // span [@class =&#39; passwordmessage&#39;] / follow-sibling :: node()[(preceding-sibling :: span)而不是(self :: span)] [4]

你们认为,还有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

假设代码位于某个div标记(或任何其他标记),如下所示:

<div class="something">
    <span class="passwordmessage" id="PasswordMessage" name="PasswordMessage"></span>
    <br class="">
    <br class="">
    <span class="">The users new password is: </span>
    "7b8rzyx

                "
    <br class="">
</div>

这样做:

String firstText = driver.findElement(By.xpath("//div[@class='something']")).getText();
String firstChildText = driver.findElement(By.xpath("//div[@class='something']/span[2]")).getText();
String firstText = firstText.replace(firstChildText, "");

答案 1 :(得分:1)

由于您使用的是Selenium,因此无法使用xpath语法直接获取文本。

但是这可以通过使用页面源和JAVA轻松解决。字符串

// get the page source and remove all spaces
String pageSource = driver.getPageSource().replace(" ", "");

// split the page source into 2 based on the text and use the second
// part. This will give the required text plus the additional HTML
pageSource = pageSource.split("<span>The users new password is: </span>".replace(" ", ""))[1];

// split again using the <br/> to get the required text
pageSource = pageSource.split("<br/>")[0];

System.out.println(pageSource.trim());

希望这会对你有所帮助。

答案 2 :(得分:1)

假设有一个上层元素:

的xpath:

//div[@class='something']/child::text()