你的問題的一種可能的解決方案: 使用js遍歷所有標籤,並找到第一個對應於你的正則表達式。
pubic String getLocatorByRegExp(){
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var regex = /^\d{5}$/");
stringBuilder.append("var x=document.getElementsByTagName('a');");
stringBuilder.append("for(var t = 0; t <x.length; t++){if(regex.test(parseInt(x[t].text()))) return x[t].text().toString();} ");
String res= (String) js.executeScript(stringBuilder.toString());
return res;
}
String properLinkText = getLocatorByRegExp();
driver.findElement(By.xpath(//a[contains(text(),properLinkText)])).click()
相當複雜的做法。但在我看來,有可能找到更簡單的解決方案。 它是頁面上唯一的5位唯一標識(我的意思是頁面上只有一個元素?) 如果是這樣,很容易找到這個元素的CSS定位器或xpath。 請提供一些你的html,並指出你需要點擊的元素。
沒有id?沒有固定的xpath?毆打這些開發者...... –
這個問題與[this one]基本相似(http://stackoverflow.com/questions/12447690/selenium-c-sharp-webdriver-findelementsby-linktext-regex/12451786)。在這種情況下,您可以使用'getAttribute(「href」)'而不是'getText()',但其餘的代碼實際上是相同的。 – JimEvans