我试图找出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;
我想从代码中捕获 7b8rzyx 值。 我试过了: follow-sibling :: node(),preceding-sibling :: br但是却无法得到它。
任何帮助表示赞赏!
[编辑] 到目前为止我已达到: // span [@class =&#39; passwordmessage&#39;] / follow-sibling :: node()[(preceding-sibling :: span)而不是(self :: span)] [4]
你们认为,还有更好的方法吗?
答案 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()