首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法转到下一页

无法转到下一页
EN

Stack Overflow用户
提问于 2017-08-15 01:59:57
回答 1查看 332关注 0票数 3

我使用selenium用python编写了一个脚本,可以遍历不同的页面,从第一页开始一直到分页。但是,除了一些数字之外,下一页按钮没有其他选项。当我点击这个数字时,它会把我带到下一页。不管怎样,当我尝试用我的脚本这样做的时候,它确实点击了第二页,然后转到那里,但它不再滑动了,我的意思是,它不是继续到第三页,而是中断,抛出以下错误。

代码语言:javascript
复制
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

我正在尝试的脚本:

代码语言:javascript
复制
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()

分页号在其中的元素:

代码语言:javascript
复制
<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>

顺便说一句,单击主页中的“搜索”按钮时会出现分页选项。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-15 04:28:55

您不能遍历预定义元素的列表,因为在创建click()页面后,这些元素会刷新,并且这些元素会过时

您可以在下面进行尝试:

代码语言:javascript
复制
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

这应该允许您在可能的情况下切换到下一页

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45680329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档