我在运行匹配XPATH方法时遇到问题:
@Test(groups = "regression")
@Parameters( { "baseUri", "locale" })
public void testShopping(String baseUri, String locale) throws Exception{
session().allowNativeXpath("false");
String shoppingLink = session().getAttribute("//div[@id='footernav_links']//a[matches(@href,'.*shopping.*')]/@href");
LOGGER.info(shoppingLink);
}
抛出异常
1:25.871 INFO - Command request: getAttribute[//div[@id='footernav_links']//a[matches(@href,'.*shopping.*')]/@href, ] on session 057af825ff224b16877a61b97b974b72
13:31:25.912 INFO - Got result: ERROR: Element //div[@id='footernav_links']//a[matches(@href,'.*shopping.*')]/ not found on session 057af825ff224b16877a61b97b974b72
13:3
我正在使用FF3.6,并从文章中获得了此代码的动机
答案 0 :(得分:1)
让它发挥作用。我现在使用以下语法
session().allowNativeXpath("false");
String shoppingLink = session().getAttribute(
"//div[@id='footernav_links']//a[matches(@href,'/shopping/')]/@href");
LOGGER.info(shoppingLink);
我正在搜索的链接是形式
http://mysite.com/wcs/shopping/overview?cc=gb&lc=en
我不确定这是否完全正确。
答案 1 :(得分:1)
您可以使用contains
,如下所示:
xpath=id('footernav_links')//a[contains(@href, '/shopping/')]@href
此外,最终/
之前的@
不是必需的,您可以将//div[@id='footernav_links']
简化为id('footernav_links')
,如上所示。请注意,如果您这样做,则需要xpath=
前缀。
或者,您可以使用CSS定位器:
css=#footernav_links a[href*=/shopping/]@href