2016-05-24 5 views
1

複数のクラスを持つ要素を選択する方法に関する質問の答えを見ました。解決策の1つは次のとおりです。XPath経由で2つのCSSクラス属性値を照合する方法は?

//div[contains(@class, 'class1') and contains(@class, 'class2')] 

しかし、これはdiv要素がclass1またはclass2を含むクラス文字列があった場合に壊れます。複数のクラスを持つタグを選択する公式な方法はありますか?この方法は壊れますか?

答えて

0

はい、あなたのXPathは望ましくない@class値と一致することができることを正しい:

//div[contains(@class, 'class1') and contains(@class, 'class2')] 

しかし、これはタグが クラス1またはクラス2を含むクラス文字列があった場合に破るを

たとえば、上記のXPathは、div要素を次のいずれかの@class属性値と一致させます。

class="class10 class20" 
class="notclass1 notclass2" 
class="class1class2" 

通常保障は@classに、ならびにターゲット文字列にスペースを付加し、付加することである。

//div[ contains(concat(' ', @class, ' '), ' class1 ') 
     and contains(concat(' ', @class, ' '), ' class2 ')] 

上述したように、この改良されたXPathは、このような望ましくない変動が一致しません。

関連する問題