2016-09-04 173 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结构保持不变。