我查看了有关如何选择具有多个班级的元素的问题的答案。其中一个解决方案是:
//div[contains(@class, 'class1') and contains(@class, 'class2')]
但如果div
元素的类字符串包含class1
或class2
,则会中断。是否有正式的方法来选择具有多个类的标签?这种方式会破裂吗?
答案 0 :(得分:0)
是的,您的XPath可以匹配不需要的@class
值是正确的:
//div[contains(@class, 'class1') and contains(@class, 'class2')]
但如果标签的类字符串包含,那么这会破坏 class1或class2
例如,上述XPath会将div
元素与以下任何@class
属性值匹配:
class="class10 class20"
class="notclass1 notclass2"
class="class1class2"
通常的安全措施是在@class
以及目标字符串前加上和附加空格:
//div[ contains(concat(' ', @class, ' '), ' class1 ')
and contains(concat(' ', @class, ' '), ' class2 ')]
这种改进的XPath不会与上面提到的不期望的变化相匹配。