2011-11-21 28 views
0

我在單選按鈕組中的單選按鈕旁邊有一些雜散文本。我試圖用xpath和watir來獲取它,但我沒有運氣。下面是它使用watir中的xpath獲取選定單選按鈕旁邊的雜散文本

<html> 
<head></head> 
<body> 
<input type="radio" name="options" value="No">No <br /> 
<input type="radio" name="options" value="Yes">Yes <br /> 
<input type="radio" name="options" value="Maybe">Maybe <br /> 
</body> 
</html> 

一些樣本HTML我可以

selectedRadio = browser.radio(:xpath,"//input[@checked and @name='options']") 

獲得使用XPath選擇的單選按鈕,我怎樣才能獲得說是,否,也許,如果對應的單選按鈕被選中?我也嘗試使用Watir來獲取它,但是.text方法不適用於Watir :: RadioButton對象,因爲文本是流浪文本,所以這是真的。

在此先感謝。

回答

2

給出的HTML不是格式良好的XML,所以我認爲表達式將取決於Waitr如何解析輸入。如果它認爲該文本是input元素的孩子,像這樣:

<input type="radio" name="options" checked="checked" value="No">No </input><br /> 
<input type="radio" name="options" value="Yes">Yes </input><br /> 
<input type="radio" name="options" value="Maybe">Maybe </input><br /> 

然後用這個表達式:

//input[@checked and @name='options']/text() 

如果,另一方面,它會自動關閉input和治療文本作爲同級,像這樣:

<input type="radio" name="options" checked="checked" value="No"/>No <br /> 
<input type="radio" name="options" value="Yes"/>Yes <br /> 
<input type="radio" name="options" value="Maybe"/>Maybe <br /> 

然後使用下面的表達式:

//input[@checked and @name='options']/following-sibling::text()[1] 

我的猜測是,這第二個是正確的,因爲你已經說過.text沒有工作。

+0

根據Xpath第二個答案是正確的,但由於某些原因,在Watir它保持在返回零。大多數情況下,流浪文本並沒有在它自己的標籤中解析出來,因此它一直返回零 – chaitanya

0

要求開發商使頁面更容易測試通過將通過一個ID值與該按鈕相關的label內的單選按鈕相關的文本

<form> 
    <input type="radio" name="sex" id="male" /> 
    <label for="male">Male</label> 
    <br /> 
    <input type="radio" name="sex" id="female" /> 
    <label for="female">Female</label> 
</form> 

然後你就可以得到ID爲選定的按鈕,並相當容易地找到相關的標籤文本。

說真的,這對他們來說可能要容易得多,而不需要處理潦草的頁面代碼。它還爲他們提供了更多的格式化選項(通過CSS)在標籤容器中放置該文本。贏得所有。

+1

我會以相同的方式開發頁面,但顯然它的一些遺留代碼,我的團隊不想改變沒有明顯的原因 – chaitanya

相關問題