简体   繁体   English

无法进入下一页

[英]Can't move on to the next page

I've written a script in python with selenium to traverse different pages staring from the first page through pagination. 我在python中用selenium编写了一个脚本来遍历从第一页到分页的不同页面。 However, there are no options for next page button except for some numbers. 但是,除了一些数字之外,没有下一页按钮的选项。 When i click on that number it takes me to the next page. 当我点击该号码时,它将带我到下一页。 Anyways, when i try to do that with my script, it does click on the second page and goes there but it doesn't slide anymore, I meant instead of going on to the third page it breaks throwing the following error. 无论如何,当我尝试用我的脚本执行此操作时,它会点击第二页然后去那里但它不再滑动,我的意思是不是继续到第三页它突破了抛出以下错误。

line 192, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document

Script I'm trying with: 我正在尝试的脚本:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("http://www.cptu.gov.bd/AwardNotices.aspx")
wait = WebDriverWait(driver, 10)
driver.find_element_by_id("imgbtnSearch").click()
for item in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "#dgAwards > tbody > tr > td > a"))):
    item.click()
driver.quit()

Elements within which the pagination numbers are: 分页编号的元素是:

<tr align="right" valign="top" style="font-size:XX-Small;font-weight:normal;white-space:nowrap;">
        <td colspan="8"><span>Page: </span><a href="javascript:__doPostBack('dgAwards$ctl01$ctl01','')">1</a>&nbsp;<a href="javascript:__doPostBack('dgAwards$ctl01$ctl02','')">2</a>&nbsp;<span>3</span>&nbsp;<a href="javascript:__doPostBack('dgAwards$ctl01$ctl04','')">4</a>&nbsp;<a href="javascript:__doPostBack('dgAwards$ctl01$ctl05','')">5</a>&nbsp;<a href="javascript:__doPostBack('dgAwards$ctl01$ctl06','')">6</a>&nbsp;<a href="javascript:__doPostBack('dgAwards$ctl01$ctl07','')">7</a>&nbsp;<a href="javascript:__doPostBack('dgAwards$ctl01$ctl08','')">8</a>&nbsp;<a href="javascript:__doPostBack('dgAwards$ctl01$ctl09','')">9</a>&nbsp;<a href="javascript:__doPostBack('dgAwards$ctl01$ctl10','')">10</a>&nbsp;<a href="javascript:__doPostBack('dgAwards$ctl01$ctl11','')">...</a></td>
    </tr>

Btw, pagination option appears upon clicking on "search" button in the main page. 顺便说一句,点击主页面中的“搜索”按钮后会出现分页选项。

You cannot iterate through the list of pre-defined elements because after you make a click() page refreshes and those elements become stale 您无法遍历预定义元素列表,因为在您执行click()页面刷新并且这些元素变得陈旧之后

You can try below: 你可以尝试下面:

from selenium.common.exceptions import NoSuchElementException    

page_counter = 2
while True:
    try:
        if not page_counter % 10 == 1:
            driver.find_element_by_link_text(str(page_counter)).click()
            page_counter += 1
        else:
           driver.find_elements_by_link_text("...")[-1].click() 
           page_counter += 1
    except NoSuchElementException :
        break

This should allow you to switch to next page while it's possible 这应该允许您在可能的情况下切换到下一页

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM