2016-03-15 19 views
1

文字,我需要找到XPath來從下面的html頁面中獲得價值300寫的XPath。我用xpath作爲// label [contains(text(),'of')]/following-sibling :: text() - 從stackoverflow的答案 - 但它沒有很好地工作。我的下一個行動是基於這個價值。所以我需要閱讀它。如何找到 - 爲間2標籤標籤

<td class="clsLineCounterLabel"> 
<input id="lineCounter" class="clsLineCounter" tabindex="-1" size="4" value="0" readonly=""/> 
<label id="lblOf" for="Of">of</label> 
     300 
<label id="lblAllowedTextLines" for="AllowedTextLines">allowed text lines</label> 
</td> 

任何幫助?

+0

這個HTML代碼中有300個存在於哪裏? –

+0

我剛剛更新了問題,以便您可以看到HTML片斷。感謝您的關注。 – Jafar

回答

0

文本300屬於<td>標籤。嘗試

String value = driver.findElement(By.className("clsLineCounterLabel")).getText(); 

value300

而且XPath是

//td[@class='clsLineCounterLabel'] 
+0

@ Jaf-ManualQA它在'iframe'裏面嗎? – Guy

+0

NO。它不是iFrame。它只在正常的HTML頁面上。輸入標記實際上是一個字段,一旦用戶開始將行輸入到下面的消息區域中,該字段就會增加。即如果用戶輸入3行,它將顯示爲300個允許行中的3行。 – Jafar

+0

@ JAF-ManualQA嘗試// TD [@類= 'clsLineCounterLabel'] – Guy

0

使用下面的代碼:在控制檯上

String value = driver.findElement(By.xpath("//input[@id='lineCounter]/parent::td")).getText(); 

打印值將打印您Td的全部文本,然後篩選整數值。

希望這會起作用。

感謝 薩迪克

+0

薩迪克·阿里,不幸的是,沒有工作了。根本找不到元素來打印完整的文本。在等待By.xpath定位的元素可見性10秒後超時://輸入[@ id ='lineCounter]/parent :: td – Jafar

0

獲取300是一種棘手,因爲它沒有自己的節點。

你可以用一些JavaScript得到了300的元素作爲參數:

WebElement element = driver.findElement(By.id("lblOf")); 
String txt = ((JavascriptExecutor)driver).executeScript(
    "return arguments[0].firstChild.textContent;", element); 

或用單JavaScript調用:

String txt = ((JavascriptExecutor)driver).executeScript(
    "return document.getElementById('lblOf').firstChild.textContent;", element); 

或用正則表達式提取數量:

String txt = driver.findElement(By.xpath("//*[@id='lblOf']/..")) 
        .getText().replaceAll("[^\\d]", "");