селен XPath соответствует методу

У меня есть проблемы при выполнении соответствий метод 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

1
задан Community 23 May 2017 в 12:10
поделиться

2 ответа

Вы можете использовать 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
ответ дан 2 September 2019 в 22:31
поделиться

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

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
ответ дан 2 September 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: