selenium+xpath应用技巧-单引号双引号处理篇

上一篇 / 下一篇  2009-04-09 09:35:54 / 个人分类:selenium

 

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()是目前找到的唯一能处理单引号、双引号同时存在的方法;
如果有其它更好的办法,麻烦各位告知哦。。。


TAG: 双引号 quote Selenium selenium xpath 单引号

 

评分:0

我来说两句

Open Toolbar