2013-08-29 6 views
0

Вопрос: Как найти ссылку с селеном JAVA API в следующем сценарии:Как найти ссылку на селен?

  • Ссылка оленья кожа иметь идентификатор
  • Есть много ссылок, они отличаются только в HREF
  • Я знаю, что некоторые уникальные сведения о (подстроки) в HREF в ссылке, которую я хочу, чтобы нажать на
  • Все ссылки имеют тот же текст

Я написал этот метод, я пытался использовать xpat вс функция матча:

public void clickOnLink(String sub_hrefText){ 
    String xpath = String.format("a[matches(@href,'%s')]",sub_hrefText); 
    browser.findElements(By.xpath(xpath)).get(0).click(); 
} 

Но я получил исключение:

InvalidSelectorException

+2

вы пытались 'string.Format (".// а [содержит (@href, '% s')]", sub_hrefText)'? –

+0

Это супер! Работает! В чем была проблема с моей версией? – boli

+0

'.//' в начале. Он все еще должен быть действительным. XPath: P –

ответ

1

Вы говорите

Я знаю, что некоторые уникальные сведения о (подстроки) в HREF из ссылку, которую я хочу нажать на

поэтому вы можете использовать функцию XPath 1.0 contains(haystack, needle) (см. W3C XPath spec).

Вы также нужен // или - безопаснее - .// в начале своего выражения также выбрать потомок a элементы контекстного узла (корневой узел в вашем случае) далее вниз по дереву документа, а не только прямые дети a узлов.

Это дает нам:

public void clickOnLink(String sub_hrefText){ 
    String xpath = String.format(".//a[contains(@href, '%s')]",sub_hrefText); 
    browser.findElements(By.xpath(xpath)).get(0).click(); 
} 
Смежные вопросы