2017-01-19 14 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

投稿のためのプロのヒント:あなたの質問への答えを取得したら、それを編集して別の質問をしないでください。既に編集した回答を無効にしないようにする必要がありますので、新しい質問をして、必要に応じてここにリンクしてください。第2に、ここでは[解決済み]タイトルハックを使用しません。代わりに受け入れ/ティックシステムを使用する必要があります。最後に、おしゃれなスタイルを控えてみてください。技術的な問題は「もっとドラマ」ではありません。ありがとう! – halfer

答えて

1

一つの解決策は、コメントで示唆 `// *`と途中で ``/*に置き換え

FindElements(By.XPath("//*[contains(@class,'XYZ')]//*[contains(@class,'important')]"); 
関連する問題