2017-01-19 51 views
0

我無法找到正在編寫的程序的正確XPath。 的XML是這樣的:在XPath中找到類「A」中的所有類「B」

<root> 
    <div class"XYZ"> 
     <div> 
      <div class = "abc"> 
       <a class = "important">Important Information - 1</a> 
      </div> 
      <div class = "abc"> 
       <a class = "important">Important Information - 2</a> 
      </div> 
      <div class = "abc"> 
       <a class = "important">Important Information - 3</a> 
      </div> 
     </div> 
    </div> 
</root> 

所以,你可以看到,有一類,我需要去「XYZ」,並在這個類有許多名爲「abc」類。事實上,在課堂「abc」前面還有更多的<div>

我需要獲取每個「重要信息-X」。

我的想法是

FindElements(By.XPath("//*[contains(@class,'XYZ')]/*[contains(@class,'important')]"); 

爲什麼我不能只搜索類=「重要」本身,有文檔,它具有相同的類名,但我在另一部分的問題不需要這些信息。只有班級中的「XYZ」。

當我只用:

FindElements(By.XPath("//*[contains(@class,'XYZ')]"); 

它的工作原理,但我得到了很多不重要的信息太多,因爲有更多的東西在<div>秒。在意見提出

+0

與'// *'中間更換'/ *'? – GSerg

+0

該死的......它有效xD – I3LaCkPeArL

+0

張貼專業提示:一旦你得到了你的問題的答案,請不要編輯它來問另一個問題。我們需要確保編輯不會使已經給出的答案無效,因此請提出一個新問題,並在適當的情況下將其鏈接回。其次,我們在這裏不使用[解決]標題攻擊 - 應該使用接受/打勾系統。最後,請儘量避免使用健談的風格 - 技術問題不是「更戲劇化」。謝謝! – halfer

回答

1

一種解決方案是

FindElements(By.XPath("//*[contains(@class,'XYZ')]//*[contains(@class,'important')]"); 
相關問題