2016-09-04 218 views
1

所有我正在刪除一個web應用程序,我需要找到一個特定的元素,但我無法找到它與我的xpath。 這就是我想要找的元素Java硒查找元素與xpath

<table> 
    <tr> 
     <th class="details"> 
      <label>Name</label> 
     </th> 
     <td class="data"> 
      <div id="..."> 
       <div id="..."></div> 
       <input id="..." type="text"> 
      </div> 
     </td> 
    </tr> 
.......... 
</table> 

我成功地找到了它的HTML代碼,但是當我發現這些ID自動生成的我卡住了。我試圖解決這個問題,找到包含文本'名稱'的標籤,然後找到兄弟姐妹,但沒有。這是我的XPath:

//*[text()[contains(.,'Name')]]/../following-sibling::td 
+0

嘗試這個'//輸入[@類型=「文本」]'你拼錯'Name'爲'諾姆'在你的xpath中。 – Ravikumar

+0

這些課程也在變化?喜歡的細節,數據 – lauda

+0

我忘了說,在這個網站有多個輸入標籤,但也是班級正在改變。 –

回答

1

你應該嘗試使用下面xpath: -

String xpath = "(.//label[text() = 'Name']/following::input)[1]"; 

或者

String xpath = ".//label[text() = 'Name']/../following-sibling::td//input"; 

或者

String xpath = "(.//input[preceding::label[text() = 'Name'])[1]"; 

或者

String xpath = ".//input[ancestor::td[preceding-sibling::th/label[text() = 'Name']]]"; 

您可以使用這些人上面xpath爲下面找到慾望輸入元素: -

browser.findElement(By.xpath(xpath)); 
+1

謝謝,第二個人工作 –

0

嘗試下面的XPath

"//label[contains(.,'Name')]/../following-sibling::td/div/input[@type='text']" 

假設DOM結構保持不變。