在 Selenium 中定位元素

Locating an Element in Selenium

我正在尝试在 java 中使用 Selenium 定位 link。我想用网络驱动点击link。该元素是一个数字,它是另一个页面的 link。这是 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();

对于给定的 i 值,href 字符串确实包含 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

为什么会发生这种情况?select 这些元素的最佳方式是什么?

您可以通过linkText()找到链接:

link = doc.select("tr.DataGridPagerStyle").first().findElement(By.linkText(i))
link.click()