1

我已将定位器放在属性文件中,例如:

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但没有成功。

有人可以建议一种方法吗?

4

2 回答 2

3

在 XPath 1.0 中,您可以使用单引号或双引号来分隔字符串文字,并且可以使用其他类型的引号在字符串中表示自己。你不能有一个包含单引号和双引号的字符串文字,但你可以使用 concat() 来解决这个限制:

concat('He said: "', "I won't", '"')

如果 XPath 表达式出现在施加其自身约束的宿主语言中,情况就复杂了。在这种情况下,XPath 表达式中的任何引号都必须使用宿主语言约定进行转义,例如\"在 Java 中,"在 XML 中。

于 2018-07-02T11:57:35.687 回答
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";
...
于 2018-07-02T20:23:41.707 回答