[英]How to get/find the element of text value in table? Selenium Webdriver
[英]In Selenium Webdriver, how to get a text after an element?
我想得到一個完全出現在特定元素之后的文本。 請查看示例代碼:
<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給了我一個錯誤,因為輸出不是一個web元素,而是一個文本。 因此,不可能使用findElement。
有什么想法如何以干凈的方式得到這個文本? 我的意思是我不想得到所有文本:(在這種情況下)submitter \\ nsubmitter@asd.com \\ nasdas然后提取所需的文本。
我認為在Account之后沒有直接提取文本的方法:即xpath直接引用text ='asdas'
因此,不要試圖直接讀取text ='asdas',而是嘗試讀取p標簽中的每個文本並執行如下操作來提取標簽。
WebDriver driver = new FirefoxDriver();
driver.get("file:///C:/Users/rajnish/Desktop/myText.html");
// xpath 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
希望這對你有所幫助
您可以使用一段Javascript來獲取以下文本節點:
// get the targeted element
WebElement element = driver.findElement(By.cssSelector("id('content-tab-submitter')/p/span[contains(.,'Account')]"));
// get the following text
String text = (String)((JavascriptExecutor)driver).executeScript(
"return arguments[0].nextSibling.textContent.trim()", element);
希望這完美無缺。 如果沒有那么請在span類前添加div類。
//span[@class='screenHidden'][contains(., 'submitter')][contains(., 'submitter@asd.com')][contains(., 'asdas')]
要獲取文本,例如asdas恰好在<span>
使用innerText作為帳戶,您可以使用以下代碼行:
//Identify the parent node
WebElement myElement = driver.findElement(By.xpath("//div[@id='content-tab-submitter']//p"));
String myText = ((JavascriptExecutor)driver).executeScript('return arguments[0].childNodes[8].textContent;', myElement).strip()
//or
String myText = ((JavascriptExecutor)driver).executeScript('return arguments[0].childNodes[10].textContent;', myElement).strip()
您可以使用Selenium的getText()方法,例如: -
driver.findElement(By.xpath("xpath of the element")).getText();
你的xpath可以是: -
//span[contains(.,'Account')]/following::text()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.