当 xpath 未知是否会出现在页面上时,选择它时出现问题



我有一段我正在尝试编写的硒代码,它将在页面底部选择一个页码指示器并计算其上的元素。 但是,如果只有一个页面,则不会出现此数字指示器,并且将来会更新并最终包含多个页面。

如果发现页码指示器存在,如何使一段硒代码选择最后一页? 我让它在网页上搜索一段仅在指示器出现时才出现的文本,但我被困在之后该怎么做才能让它选择页码指示器中的最后一页。

<div class="view view-blog view-id-blog view-display-id-page_1 view-dom-id-3e6e5f93bb52f8bc5f35e55c6da86526">
<div class="view-filters">
<form id="views-exposed-form-blog-page-1" class="views-exposed-form-blog-page-1" accept-charset="UTF-8" method="get" action="/blogs">
</div>
<div class="view-content">
<div class="item-list">
</div>
<h2 class="element-invisible">Pages</h2>
<ul class="pager">
<li class="pager__item pager__item--current">1</li>
<li class="pager__item">
<li class="pager__item">
<li class="pager__item">
<li class="pager__item">    
<li class="pager__item">
<li class="pager__item pager__item--next">
<li class="pager__item pager__item--last">

<li class="pager__item pager__item--last">是指向我要选择的按钮的文本。

其中有 5 页,所以它会转到第 5 页,但我正在尝试编写它,以便它只转到当前列表中的最后一页,这样我就不必硬编码要跳转到的数字。

我当前的代码只是

if (driver.getPageSource().contains("pager")) {
            WebElement k = driver.getPageSource().findElement("pager__item pager__item--last");

pager__item pager__item--last是代码内部的字符串,对应于我要选择的按钮<li class="pager__item pager__item--last">

搜索

此字符串的好方法是什么,然后单击它对应的按钮(如果您不确定它是否存在于您的代码中)?

谢谢

以谷歌搜索结果为例

  1. 为页码指示器编写条件语句
  2. 当满足条件时,使用 FindElements 方法获取表示页码的所有<a>标记
  3. 从列表中获取最后一个元素,这将是最后一页
  4. 单击元素

最好的方法是使用try catch。

try{
driver.findElementByXpath("Your xpath of last page button").click();//you can use any other locator
}catch(NoSuchElementException e){
//if you get exception then it means that element is not present(it means there is only one page)
//if you have multiple page then that button will be present and it'll not through any exception and it will trigger click event in that element and you'll get navigated to last page
}

最新更新