2013-08-29 36 views
0

问题是:如何找到在以下情况下与硒JAVA API链接:如何找到硒的链接?

  • 链接可是没有一个ID
  • 有很多环节,这些差异只是在href
  • 我知道(子)一些独特的信息,我想点击
  • 所有链接的链接具有相同的文字

我写这个方法的href,我试图用XPAT HS匹配功能:

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(); 
}