我试图在java中使用Selenium找到一个链接。我想使用网络驱动程序点击链接。元素是一个数字,是指向另一个页面的链接。这是包含我想要找到的元素的html部分:
<tr class="DataGridPagerStyle">
<td colspan="5">
<span>1</span>
<a href="javascript:__doPostBack('ctl00$ctl62$dgPersonSearchResults$ctl19$ctl01','')">2</a>
<a href="javascript:__doPostBack('ctl00$ctl62$dgPersonSearchResults$ctl19$ctl02','')">3</a>
<a href="javascript:__doPostBack('ctl00$ctl62$dgPersonSearchResults$ctl19$ctl03','')">4</a>
</td>
</tr>
我想浏览页面,因此我需要找到“a href” 元素。有时会有不同数量的页面。我尝试使用以下java代码找到并单击这些元素:
String href = doc.select("tr.DataGridPagerStyle").first().select("a:contains(" + i + ")").first().attr("href");
element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("a[href=" + href + "]")));
element.click();
href字符串确实包含给定值i的href属性的正确值,但是在运行代码时出现此错误:
The given selector a[href=javascript:__doPostBack('ctl00$ctl62$dgPersonSearchResults$ctl19$ctl01','')]
is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: An invalid or illegal selector was specified
为什么会发生这种情况?选择这些元素的最佳方式是什么?
答案 0 :(得分:3)
您可以通过linkText()
找到这些链接:
link = doc.select("tr.DataGridPagerStyle").first().findElement(By.linkText(i))
link.click()