java - 定位 Selenium 中的元素

标签 java html selenium web-scraping css-selectors

我正在尝试使用 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

为什么会发生这种情况以及选择这些元素的最佳方法是什么?

最佳答案

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

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

关于java - 定位 Selenium 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27884167/

相关文章:

C# 调用 java.exe 并从 cmd 获取结果错误

java - 无法与库项目和 JNI 一起运行 android 应用程序

java - CQRS/ES - 处理投影错误

html - Div类:hover not working properly in IE

html - 使用来自输入框的用户输入

python - 属性错误: 'WebElement' object has no attribute 'copy' error when moved the function Select to a common file using Selenium Python through Django

Java:有效(且安全)地删除最终 SortedMap<K,V> 中的元素序列?

javascript - 更改不确定的剑道进度条的颜色并为其添加自定义标签

java - webdriver 不断抛出 IOException 并重新连接

python - 未定义“Python Selenium “name '驱动程序”