我已将定位器放在属性文件中,如:
header.navigation.product.link = //div[contains(@class,'grid-')]//li/a[contains(.,'%s')]
并且在我的代码中使用此定位器时
String headerproductlink = String.format(ConfigurationManager.getBundle()
.getString("header.navigation.category.link"), category)
和 类别=女士运动服
当我试图找到它找不到的元素时。
甚至我都尝试过Women\'s Gym Clothing
,但没有成功。
有人可以建议一种方法吗?
答案 0 :(得分:3)
在XPath 1.0中,可以使用单引号或双引号来分隔字符串文字,并且可以使用其他类型的引号在字符串中表示自身。您不能同时包含单引号和双引号的字符串文字,但是可以使用concat()来解决此限制:
concat('He said: "', "I won't", '"')
如果XPath表达式出现在施加自身约束的宿主语言中,则情况将变得复杂;在这种情况下,必须使用宿主语言约定对XPath表达式中的所有引号进行转义,例如Java中的\"
,XML中的"
。
答案 1 :(得分:1)
以下几种对我有用的方法:
属性文件中的定位符:
another.header=xpath=//h1[contains(.,"%s")]
Java代码:
String t = "st. john\'s bay - women";
String header = String.format(getBundle().getString("another.header"), t);
CommonStep.get("https://www.jcpenney.com/g/st-johns-bay-women/N-bwo3xZ1z0nvauZ1z0nh7w");
String headerText=ElementFactory.$(header).getText();
以下内容也很好
属性文件中的定位符:
another.header={'locator':'xpath=//h1[contains(.,"%s")]'}
Java代码:
String t = "st. john\\'s bay - women";
...
或 属性文件中的定位符:
another.header={"locator":"xpath=//h1[contains(.,\\"%s\\")]"}
Java代码:
String t = "st. john's bay - women";
...