【问题标题】:Locating an Element in Selenium在 Selenium 中定位元素
【发布时间】:2015-03-09 04:01:00
【问题描述】:

我正在尝试在 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();

对于给定的 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

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

【问题讨论】:

    标签: java html selenium web-scraping css-selectors


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      相关资源
      最近更新 更多