xpath内容中含有引号的处理方法

您所在的位置:网站首页 id特殊符号复制不了怎么办 xpath内容中含有引号的处理方法

xpath内容中含有引号的处理方法

2024-07-05 19:03| 来源: 网络整理| 查看: 265

当xpath中的内容只含有单引号或只含有双引号时,处理都是比较简单的

例: 只含有单引号的处理: title内容为:a'a slenium.isElementPresent("//tr/td[@title=\"a'a\"]");

只含有双引号的处理: title内容为:a"a slenium.isElementPresent("//tr/td[@title='a\"a']");

即用单引号包含双引号,双引号包含单引号,另外如果有多层时,注意使用\"的方式转义;

 

如果内容同时包含单引号及双引号时,处理的方式同只有单引号或只有双引号相似; 但注意使用xpath中的函数concat进行连接;

例: title内容为:'"(即一个单引号,一个双引号) slenium.isElementPresent("//tr/td[@title=concat(\"'\",'\"')]"); 重点是:concat(\"'\",'\"'),因为外层还有一个双引号嵌套,所以concat中的双引号要使用\"        简单看为:concat(" ' ",' " ')……这样看应该比较容易理解点:)

当属性内容比较多时 例: title内容为:aa'aa"aa slenium.isElementPresent("//tr/td[@title=concat(\"aa'\",'aa\"aa')]"); 也可以用: slenium.isElementPresent("//tr/td[@title=concat('aa',\"'\",'aa','\"','aa')]"); 灵活应用哦。。。

 

http://hi.baidu.com/ligq/blog/item/9195d03f6c0200c57d1e71df.html 这篇文章中有一个函数对xpath中的单引号、双引号进行处理

 static String QueryStringFilter(String queryStr)     {         queryStr = queryStr.replace("\"", "[\"]");         queryStr = queryStr.replace("'", "',\"'\",'");         queryStr = queryStr.replace("[\"]", "','\"','");         queryStr = "concat('" + queryStr + "')";         return queryStr;     }

之前使用replaceAll,未使用replace,所以替换后的结果不正确; 因为replaceAll函数的第一个参数是正则表达式,即中括号会被当成正则中的特殊字符处理(解决该方法,可用"\\["代替"[",中括号的后一半"]"没有影响) 当然也可以用别的特殊符号代替中括号,中括号主要起到分隔符的作用;

 

另:曾尝试使用;代替双引号,'代替单引号,虽然xpath不会报语法错误,但并不能找到相匹配的element,似乎xpath不能对;及'等进行转义; concat()是目前找到的唯一能处理单引号、双引号同时存在的方法; 如果有其它更好的办法,麻烦各位告知哦。。。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3