2016-09-16 101 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"));

相關問題