XPath V1.0包含的()不够具体
我有一个应用程序,它要求我为一个元素找到一个XPath选择器,然后看看这个XPath是否可以简化 所以如果我有XPath V1.0包含的()不够具体,xpath,Xpath,我有一个应用程序,它要求我为一个元素找到一个XPath选择器,然后看看这个XPath是否可以简化 所以如果我有 <a class="abc def gh"> 这已经足够具体了。问题是,它还选择类为“abcxyz”的项目 有没有办法选择只有“abc”类的项目 i、 e.我认为这很清楚,但我想查找具有“abc”或“abc def”类别但不具有“abcxyz”类别的项目 这里有一个更具体的例子,因为我认为目前为止,这两个答案都不起作用: <div> <span
<a class="abc def gh">
这已经足够具体了。问题是,它还选择类为“abcxyz”的项目
有没有办法选择只有“abc”类的项目
i、 e.我认为这很清楚,但我想查找具有“abc”或“abc def”类别但不具有“abcxyz”类别的项目
这里有一个更具体的例子,因为我认为目前为止,这两个答案都不起作用:
<div>
<span id="x" class="btnSalePriceLabel">Sale:</span>
<span id="y" class="btnSalePrice highlight">$20.40</span>
</div>
我没有被选中。同样地
//span[contains(concat(' ', normalize-space(@class), ' '), ' btnSalesPrice ')]
由于
class
属性是一个多值属性,您必须:
请注意,CSS选择器具有与内置的特定类值匹配的能力:
a.abc
我认为您可以看到更简洁易读的内容。由于
类
属性是一个多值属性,您必须:
请注意,CSS选择器具有与内置的特定类值匹配的能力:
a.abc
我认为您可以看到更简洁易读的内容。如果您使用
css
进行精确匹配,尤其是使用类
属性,则会更好,在这种情况下:
a.abc
descendant-or-self::a[@class and contains(concat(' ', normalize-space(@class), ' '), ' abc ')]
您可以在几种语言上使用不同的css到xpath转换器(检查),其转换为:
a.abc
descendant-or-self::a[@class and contains(concat(' ', normalize-space(@class), ' '), ' abc ')]
最好使用
css
进行精确匹配,特别是class
属性,在这种情况下:
a.abc
descendant-or-self::a[@class and contains(concat(' ', normalize-space(@class), ' '), ' abc ')]
您可以在几种语言上使用不同的css到xpath转换器(检查),其转换为:
a.abc
descendant-or-self::a[@class and contains(concat(' ', normalize-space(@class), ' '), ' abc ')]
为了澄清,如果可以,我会使用css选择器,但我必须使用xpath。为了澄清,如果可以,我会使用css选择器,但我必须使用xpath。我不认为这对我(添加的)特定示例有效吗?@TroyWray您的xpath应该包含
btnSalePrice
而不是btnSalePrice
,是的,很抱歉,我不得不接受另一个答案,因为//a更简洁,我相信,准确地说,我认为这在我(添加的)特定示例中不起作用?@TroyWray您的xpath应该包含btnSalePrice
而不是btnSalePrice
,是这样的,ty和抱歉,我不得不接受另一个答案,因为//a更简洁,我相信,准确地说,这在我添加的示例中似乎不起作用?也许我遗漏了什么。这在我添加的示例中似乎不起作用?也许我错过了什么。