鱼C论坛

 找回密码
 立即注册
查看: 2003|回复: 5

[已解决]当使用selenium 获取分页信息 并模拟点击时 出错:

[复制链接]
发表于 2022-9-18 11:43:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. 因为涉及到登录账号密码,所以网页地址没办法发出来
  2. 网页源码:(此处是分页部分源码)

  3. <div id="spage" class="page">
  4.     <a class="pageupon" title="上一页" href="#" onclick="gotoPage('1');"></a>
  5.     <a class="c" href="#" onclick="gotoPage('1');">1</a>
  6.     <a class="c" href="#"><font color="red">2</font></a>
  7.     <a class="c" href="#" onclick="gotoPage('3');">3</a>
  8.     <a class="c" href="#" onclick="gotoPage('4');">4</a>
  9.     <a class="c" href="#" onclick="gotoPage('5');">5</a>
  10.     <a class="c" href="#" onclick="gotoPage('6');">6</a>
  11.     <a class="c" href="#"> ... </a>  //当点到第六页时,这里就不显示三个点了,而是7 8 9 都呈现出来
  12.     <a class="c" href="#" onclick="gotoPage('9');">9</a>
  13.     <a class="pagedownon" title="下一页" href="#" onclick="gotoPage('3');"></a>
  14.     共9页
  15. </div>

  16. spage=drv.find_elements(By.XPATH,"//div[@id='spage']/a")  #找到这些a标签
  17. #程序主体部分
  18. pages=spage[-2].text   这里保存的是所有页数,也就是上面代码中的  9   
  19. for x in range(2,int(pages)+1):
  20.     print(spage[x].text)
  21.     spage[x-1].click()
  22.     time.sleep(3)
  23.     _zh=drv.find_element(By.XPATH,"//table[@id='resultTb']/tbody/tr[1]/td[2]").text
  24.     _mc=drv.find_element(By.XPATH,"//table[@id='resultTb']/tbody/tr[1]/td[3]").text
  25.     _xm=drv.find_element(By.XPATH,"//table[@id='resultTb']/tbody/tr[1]/td[4]").text
  26.     _jg=drv.find_element(By.XPATH,"//table[@id='resultTb']/tbody/tr[1]/td[5]").text
  27.     print(_zh,_mc,_xm,_jg)

  28. #上面的循环只能执行前两次循环,到第三次(也就是第三页时,程序崩溃,错误信息如下)
  29. 错误信息:
  30. Traceback (most recent call last):
  31.   File "d:/wpp/temp1.py", line 84, in <module>
  32.     print(spage[x].text)
  33.   File "D:\Python37\lib\site-packages\selenium\webdriver\remote\webelement.py", line 84, in text
  34.     return self._execute(Command.GET_ELEMENT_TEXT)['value']
  35.   File "D:\Python37\lib\site-packages\selenium\webdriver\remote\webelement.py", line 396, in _execute
  36.     return self._parent.execute(command, params)
  37.   File "D:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 428, in execute
  38.     self.error_handler.check_response(response)
  39.   File "D:\Python37\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 243, in check_response
  40.     raise exception_class(message, screen, stacktrace)
  41. selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
复制代码
最佳答案
2022-9-18 12:06:36
<a class="c" href="#"><font color="red">2</font></a>这里多了一个font标签, 少了一个onclick属性, 是不是得单独处理一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-18 12:06:36 | 显示全部楼层    本楼为最佳答案   
<a class="c" href="#"><font color="red">2</font></a>这里多了一个font标签, 少了一个onclick属性, 是不是得单独处理一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-18 12:18:31 From FishC Mobile | 显示全部楼层
月下孤井 发表于 2022-9-18 12:06
2这里多了一个font标签, 少了一个onclick属性, 是不是得单独处理一下

它的功能是点到某页,某页的文本就显示为红色
但是仍然接受鼠标点击
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-19 09:23:51 | 显示全部楼层
月下孤井 发表于 2022-9-18 12:06
2这里多了一个font标签, 少了一个onclick属性, 是不是得单独处理一下

我在尝试一下这个语句
  1. for x in range(1,len(spage)+1):
  2.   drv.execute_script("gotopage("+str(x)+");")
复制代码


这个在我自己的测试中 获取通过,不知道在那个网站上效果如何??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-19 10:52:18 | 显示全部楼层
完美,给自己点个赞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-19 11:42:01 | 显示全部楼层
wp231957 发表于 2022-9-19 10:52
完美,给自己点个赞

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 17:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表