如何检查属性的文本是否包含部分参数标题(不区分大小写)?

时间:2017-06-26 15:04:50

标签: javascript xpath contains selenium-ide

我正在使用以下Xpath构建Selenium的汇总:

//a[contains(@title, "(' + args.Code + ')")]

//a[@title=\'' + args.Code + '\']

但是我需要这个参数不区分大小写,以便运行我的脚本的人不会因为添加大写或小写字母而陷入困境。

重要的是要提到密钥/属性代码将根据用户在汇总开始时写的内容而改变。

我一直在努力寻找解决方案,但还没找到。有谁知道怎么做?

1 个答案:

答案 0 :(得分:1)

this very similar questionone of the answerskjhughes,提供以下解决方案:

  

XPath 2.0解决方案

     
      
  1. 使用lower-case()
       /html/body//text()[contains(lower-case(.),'test')]
  2.   
  3. 使用matches()正则表达式匹配不区分大小写的标志:
       /html/body//text()[matches(.,'test', 'i')]
  4.   

所以在你的例子中采用第一种方法(即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

1 <子> https://stackoverflow.com/a/1625859/1575353