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