2013-10-14 55 views
1

我需要找到以下元素:如何關聯兩個相等的子元素?

String myString = driver.getElement(By.xpath("//tr//input[name='ID1']//td[3]//b")).getText(); 

但是這是行不通的,因爲<input and <td元素的<tr等於孩子的。我必須用<input找到這個元素。我怎樣才能做到這一點?

<input type="hidden" name="ID1" value="87660"> 

<td class="mainCtr" valign="top"> 

    <input type="checkbox" id="trans2660" onclick="doIndividual(this);"> 

    <a href="javascript: ............. 
    </a> 

</td> 

<td class="mainCtr" valign="top"> 

</td> 

<td class="mainLt" valign="top"> 
    <b>Grovl</b><br> 
    3<br> 
</td> 
<td class="maowsLt" valign="top"> 
    7052<br> 
    L323<br> 

回答

1

你可以做一對夫婦的方式

您可以使用 「後續兄弟」。

我還沒有使用這個屬性足夠發佈代碼,但你可以看看它在這裏https://www.google.com/search?q=xpath+following-sibling&oq=follow+siblin&aqs=chrome.1.69i57j0l3.3639j0j7&sourceid=chrome&espv=210&es_sm=122&ie=UTF-8

2.獲取輸入的父母找到3 TD

WebElement inputElement = driver.findElement(By.xpath("//tr//input[name='ID1']")); 
WebElement parent = inputElement.findElement(By.xpath("..")); 
String myBoldText = parent.findElement(By.xpath("//td[3]//b")).getText(); 
1

你可以使用..上升一級。

假設我們有HTML這樣的:

<ul> 
    <li class="sibling">Stuff</li> 
    <li class="target">Target</li> 
</ul> 

我們可以找到類的「目標」通過與一流的「兄弟」兄弟列表元素,就像這樣:

//ul/li[@class="sibling"]/../li[@class="target"] 
0

會如果使用cssSelctors更好,

String myString = driver.getElement(By.cssSelector("input[name='ID1'] td.mainLt>b")).getText(); 

UI變化更頻繁,所以對於自動化測試用例請您選擇cssSelector over xpath ..

click here for more info about cssSeletors

相關問題