我想获得恰好位于特定元素之后的文本。请看示例代码:
<div id="content-tab-submitter" class="">
<h4>Sender</h4>
<p>
<span class="screenHidden">Name: </span>
submitter
<br>
<span class="screenHidden">E-mail address:</span>
submitter@asd.com
<br>
<span class="screenHidden">Account: </span>
asdas
<br>
</p>
</div>
我想获取恰好在 <span>
之后的文本其中包含“帐户”。
通过使用此 XPath 表达式:
//*[@id='content-tab-submitter']/p/span[contains(text(),'Account')]/following::text()
Java 给我一个错误,因为输出不是网络元素而是文本。因此,不可能使用 findElement。
如何以干净的方式获取此文本?我的意思是我不想获取所有文本(在这种情况下):submitter\nsubmitter@asd.com\nasdas 然后提取所需的文本。
最佳答案
我认为没有任何直接的方法可以在 Account: 之后提取文本:即直接引用 text = 'asdas' 的 XPath 表达式。
因此,与其尝试直接读取 text = 'asdas',不如尝试读取 p 标签中的每个文本,并执行如下操作以提取标签。
WebDriver driver = new FirefoxDriver();
driver.get("file:///C:/Users/rajnish/Desktop/myText.html");
// XPath expression for talking complete text i.e all text inside every span tag that comes under p tag
String MyCompleteText = driver.findElement(By.xpath("//*[@id='content-tab-submitter']/p")).getText();
System.out.println("My Complete Text is: " + MyCompleteText);
// MyCompleteText outputs in console:
// My Complete Text is: Name: submitter
// E-mail address: submitter@asd.com
// Account: asdas
// Now we have to split our MyCompleteText on the basis of Account:
// as we want text after Account: so do it like below
String[] mytext = MyCompleteText.split("Account:");
System.out.println("I am text after Account: "+ mytext[1]);
输出将是这样的:
My Complete Text is: Name: submitter
E-mail address: submitter@asd.com
Account: asdas
I am text after Account: asdas
关于java - 在 Selenium Webdriver 中,如何在元素后获取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36542323/