我正在使用以下Xpath构建Selenium的汇总:
//a[contains(@title, "(' + args.Code + ')")]
//a[@title=\'' + args.Code + '\']
但是我需要这个参数不区分大小写,以便运行我的脚本的人不会因为添加大写或小写字母而陷入困境。
重要的是要提到密钥/属性代码将根据用户在汇总开始时写的内容而改变。
我一直在努力寻找解决方案,但还没找到。有谁知道怎么做?
答案 0 :(得分:1)
从this very similar question,one of the answers,kjhughes,提供以下解决方案:
XPath 2.0解决方案
- 使用lower-case():
/html/body//text()[contains(lower-case(.),'test')]
- 使用matches()正则表达式匹配不区分大小写的标志:
醇>
/html/body//text()[matches(.,'test', 'i')]
所以在你的例子中采用第一种方法(即lower-case()):
//a[contains(lower-case(@title), "(' + lower-case(args.Code) + ')")]
//a[lower-case(@title)=\'' + lower-case(args.Code) + '\']
来自this answer:
upper-case()
和lower-case()
是XPath 2.0函数。您的平台可能只支持XPath 1.0 1
尝试第一个解决方案(由Tomalak在the answer中建议):
//a[contains(translate(@title, \'ABCDEFGHIJKLMNOPQRSTUVWXYZ\', \'abcdefghijklmnopqrstuvwxyz\'), "(translate(' + args.Code + ', \'ABCDEFGHIJKLMNOPQRSTUVWXYZ\', \'abcdefghijklmnopqrstuvwxyz\')")]
//a[translate(@title, \'ABCDEFGHIJKLMNOPQRSTUVWXYZ\', \'abcdefghijklmnopqrstuvwxyz\')=translate(\'' + args.Code + '\', \'ABCDEFGHIJKLMNOPQRSTUVWXYZ\', \'abcdefghijklmnopqrstuvwxyz\') ]
不幸的是,这需要了解文本使用的字母表。对于普通英语,上述内容可能有效,但如果您希望重音字符,请确保将它们添加到列表中。 1