Xpath匹配逗号分隔数值始终返回true 求88-89区间筛选写法
问题原因分析
- XPath 内置的
number()函数仅支持英文小数点.作为小数分隔符,你使用逗号,作为小数位分隔符的数值传入后会直接返回NaN(非数值) - 所有和
NaN的大小比较运算结果均为false,因此你写的boolean(number(text()) > 80) = false和boolean(number(text()) < 80) = false两个条件永远同时成立,导致所有元素都被匹配 - 你尝试的
number(text()) = 88,97写法中,逗号在XPath语法里是序列分隔符,会被识别为88和97两个独立值,自然无法和目标数值匹配
正确XPath写法
要筛选数值落在88~89区间的元素,先用translate()函数把逗号替换为小数点后再做数值比较即可,写法如下:
//div[@class="prix"]/div[2]/div[2]/span[1][number(translate(text(), ',', '.')) >= 88 and number(translate(text(), ',', '.')) < 89]
如果需要精确匹配特定数值比如88,97,可以用下面的写法:
//div[@class="prix"]/div[2]/div[2]/span[1][number(translate(text(), ',', '.')) = 88.97]
内容的提问来源于stack exchange,提问作者Tester testing
相关产品推荐
相关产品推荐

