2016-09-16 85 views
0

我尝试导航的页面中有一系列嵌套元素。下面的HTML是一个简化版本:Selenium验证一个元素是否是Java中另一个元素的子元素

<div> 
 
    <h1 id="This is an id">The header is an identifier</h1> 
 
    <table> 
 
     <tr></tr> 
 
     <tr> 
 
     <ul> 
 
      <li> 
 
      <a> 
 
       <span>This my target</span> 
 
    </table> 
 
</div> 
 
     
 
     <h1>Also text</h1> 
 
     <a> 
 
     <span>This target has the same text<span> 
 
    

顶格的结构可以非常显着。我正在尝试使用xpath和文本包含来查找元素。但是,我很难验证目标确实是正确的div内的目标。如果我不知道每次的确切布局,有没有办法缩小dom树的支持?如果您需要检查一个特定的div里面,那么你应该首先确定DIV

//div//*[contains(text(), 'my text')] 

+0

您需要确定DIV?或与文本元素? – lauda

+0

我正在扫描页面以查找文本,并且需要确保我发现的文本来自不在其外的div。问题在于,dom布局在运行时会发生变化,所以我不知道高级版在跨度范围内有多远。 – Jrawr

+0

你怎么知道哪个'div'是正确的? – JeffC

回答

0

为了检查一个div内的文本,你可以撰写像一个路径。

例如,如果div有像class="my_class"的属性然后使用:

//div[@class='my_class']//*[contains(text(), 'my text')] 

你可以找到w3schools xpath syntax

+0

如果我不知道[包含(文本(),'文本')]是多少在潜水下,*语法是否工作? – Jrawr

+0

*选择任何标签,//尽可能下潜 – lauda

1

多个路径的例子您可以尝试使用与CSS选择器>操作。

例如:访问"This my target",您使用 driver.findElement(By.cssSelector("li>a>span"));

相关问题