一个指定class和只有一个style属性的div的Xpath

12

我想编写一个xpath来识别具有class为foo和display:block的div。 我写了:

div[@class="foo" and @style="*display: block*"]

但它不起作用。使用"and"是否正确?像正则表达式中那样使用星号是否正确?

1个回答

22
你的xpath正在搜索@style="*display: block*",它完全等于引号中的值。改用contains()方法。 提醒:还有starts-with()方法。
//div[@class='foo'][contains(@style,'display: block')]

使用这样的定位器存在问题,因为有时元素是可见的,但没有display:block风格。因此,您可以使用类似的定位器,但不是包含块,而是搜索不包含“none”(如display:none),可以通过将[not(contains(@style, 'none'))]添加到主要定位器中来尝试它。只需记住这种选项即可。


1
//div[@class='foo' and contains(@style, 'display: block')]//div[@class='foo' and @style='display:block;'] 有区别吗? - CodeManX
不,我只是不想使用“和”,因为这样会更多文字,但两种方式都是正确的。 - Vitaliy Moskalyuk
1
使用这种定位器存在问题,因为有时元素是可见的,但没有样式block。因此,我使用了完全相似的定位器,但是不是包含block,而是搜索not-containing“none”(如display:none),可以通过将其添加到主定位器[not(contains(@style, 'none'))]来尝试它。只需记住这个选项即可。 - Vitaliy Moskalyuk
@VitaliyMoskalyuk:至少在德国键盘上,输入反引号()比方括号(Alt Gr+8Alt Gr+9`)要容易得多。我相信这是一些德国程序员使用英文键盘/键盘布局的原因之一 ;) - CodeManX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接