gpt4 book ai didi

python - Selenium 单击到下一页直到最后一页

转载 作者:行者123 更新时间:2023-11-28 19:52:47 24 4
gpt4 key购买 nike

我试图继续点击此 website 的下一页,每次将表格数据附加到 csv 文件,然后当我到达最后一页时,附加表格数据并打破 while 循环

不幸的是,由于某种原因它一直停留在最后一页,我尝试了几种不同的方法来捕获错误

while True:
try :
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'Next'))).click()
except :
print("No more pages left")
break
driver.quit()

这个我也试过:

try:
link = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,'.pagination-next a')))
driver.execute_script('arguments[0].scrollIntoView();', link)
link.click()
except:
keep_going = False

我试过放入打印语句,但它一直停留在最后一页。

这是下一个按钮的第一页/最后一页的 HTML,我不确定我是否可以利用它做点什么:第一页的 HTML:

<li role="menuitem" ng-if="::directionLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-next" style=""><a href="" ng-click="selectPage(page + 1, $event)" ng-disabled="noNext()||ngDisabled" uib-tabindex-toggle="">Next</a></li>
<a href="" ng-click="selectPage(page + 1, $event)" ng-disabled="noNext()||ngDisabled" uib-tabindex-toggle="">Next</a>
</li>

最后一页的 HTML:

<li role="menuitem" ng-if="::directionLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-next disabled" style=""><a href="" ng-click="selectPage(page + 1, $event)" ng-disabled="noNext()||ngDisabled" uib-tabindex-toggle="" disabled="disabled" tabindex="-1">Next</a></li>
<a href="" ng-click="selectPage(page + 1, $event)" ng-disabled="noNext()||ngDisabled" uib-tabindex-toggle="" disabled="disabled" tabindex="-1">Next</a>
</li>

最佳答案

您可以按如下方式解决问题,

下一页按钮将在最后一页之前启用,在最后一页将被禁用。

因此,您可以创建两个列表来查找启用的按钮元素和禁用的按钮元素。在任何时候,启用的元素列表或禁用的元素列表大小都将为一个。因此,如果元素被禁用,那么您可以中断 while 循环,否则单击下一步按钮。

我对python语法不熟悉,所以,你可以把下面的java代码转换一下再用,肯定可以的。

代码:

    boolean hasNextPage=true;

while(hasNextPage){
List<WebElement> enabled_next_page_btn=driver.findElements(By.xpath("//li[@class='pagination-next']/a"));
List<WebElement> disabled_next_page_btn=driver.findElements(By.xpath("//li[@class='pagination-next disabled']/a"));

//If the Next button is enabled/available, then enabled_next_page_btn size will be one.
// So,you can perform the click action and then do the action
if(enabled_next_page_btn.size()>0){
enabled_next_page_btn.get(0).click();
hasNextPage=true;
}else if(disabled_next_page_btn.size()>0){
System.out.println("No more Pages Available");
break;
}
}

关于python - Selenium 单击到下一页直到最后一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51092362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com