【问题标题】:How to handle pagination via selenium-webdriver and Java如何通过 selenium-webdriver 和 Java 处理分页
【发布时间】:2018-12-12 11:41:21
【问题描述】:

我的 HTML 代码是这样的。

<ul class="pagination"><li class="active"><span>1</span></li>
<li><a title="Gå till sida 2" href="/search-property-list?page=1" style="padding: 10px 15px; margin-top: -4px;">2</a></li>
<li><a title="Gå till sida 3" href="/search-property-list?page=2">3</a></li>
<li><a title="Gå till sida 4" href="/search-property-list?page=3">4</a></li>
<li><a title="Gå till sida 5" href="/search-property-list?page=4">5</a></li>
<li><a title="Gå till sida 6" href="/search-property-list?page=5">6</a></li>
<li><a title="Gå till sida 7" href="/search-property-list?page=6">7</a></li>
<li><a title="Gå till sida 8" href="/search-property-list?page=7">8</a></li>
<li><a title="Gå till sida 9" href="/search-property-list?page=8">9</a></li>
<li class="pager-ellipsis disabled"><span>…</span></li>
<li class="next"><a title="Gå till nästa sida" href="/search-property-list?page=1">nästa ›</a></li>
<li class="pager-last"><a title="Gå till sista sidan" href="/search-property-list?page=137">sista ››</a></li>
</ul>

我的 Selenium 代码是这样的:

WebDriverWait wait = new WebDriverWait(driver, 30);          
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.tagName("a")));
List<WebElement> elements = driver.findElements(By.tagName("a"));
for (int i = 0; i < elements.size(); i++) {
    String title = elements.get(i).getAttribute("title");
    if (title.equals("Next Page")) {
        elements.get(i).click();
        break;
    }
}

【问题讨论】:

  • 请粘贴你的html而不是截图
  • 有什么问题?
  • 我无法从 1 页移动到 2 第二页。
  • 请提供html代码,而不是页面中的文本。
  • 如果标签名称为“a”的第一个 WebElement 定位到第 1 页,请单击第二个:elements.get(i + 1).click();但是当试图到达第 2 页时,第三个元素将不再位于当前 DOM 中,预计会出现 Stale Element Reference Exception。

标签: java selenium-webdriver xpath webdriver webdriverwait


【解决方案1】:

根据您提供的 HTML,您似乎在 第 1 页。因此,要浏览到 下一页,您必须诱导 WebDriverWait 以使所需的 元素可点击,您可以使用以下解决方案:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//ul[@class='pagination']//li[@class='active']//following::li[1]/a"))).click();

【讨论】:

  • 如果您想选择特定页面而不仅仅是“下一个”页面,您也可以通过页码执行此操作: //a[contains(@href, "page=2")] /跨度>
猜你喜欢
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 2016-03-23
  • 1970-01-01
  • 2019-02-20
  • 2018-04-25
  • 1970-01-01
  • 2012-04-14
相关资源
最近更新 更多