selenium XPATH匹配方法

时间:2010-08-02 08:16:22

标签: java regex xpath selenium

我在运行匹配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,并从文章中获得了此代码的动机

how-to-use-regex-in-selenium-locators

2 个答案:

答案 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