Селен XPATH соответствует методу - PullRequest
1 голос
/ 02 августа 2010

У меня проблемы с запуском метода 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 и получил мотивацию для этого кода из статьи

как в использовании, регулярное выражение-в-селен-локаторы

Ответы [ 2 ]

1 голос
/ 02 августа 2010

Вы можете использовать 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
1 голос
/ 02 августа 2010

Получил это на работу.Теперь я использую следующий синтаксис

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
Я не уверен, что это полностью правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...