• python下用selenium的webdriver包如何在执行完点击下一页后没有获得下一页新打开页面的html源代码


    问题描述:

    新打开的页面url不变,只是网页内容变了,然后使用drive.page_source得到的都是第一页的html代码,并不是当前页面的html代码。

    1.

     原因:webdriver仍默认在原页面下获取标签等信息;

    解决方法:采用切换页面句柄的方式解决;

    #获取当前页面句柄
    normal_window = driver.current_window_handle
    #获取所有页面句柄
    all_Handles = driver.window_handles
    #如果新的pay_window句柄不是当前句柄,用switch_to_window方法切换
    for pay_window in all_Handles:
      if pay_window != normal_window:
        driver.switch_to_window(pay_window)

    2.

     原因:缺少time.sleep(1),如果时间短了就无法正常获取数据,所以检查适当位置是否有停留

    def get_info(num):
        driver.get(url)
        driver.implicitly_wait(10)  # 隐式等待n秒,解释JavaScript是需要时间的,如果短了就无法正常获取数据,如果长了浪费时间;implicitly_wait()给定时间智能等待
        driver.find_element_by_id('pageNum').clear()#清除输入框
        driver.find_element_by_xpath('//*[@id="pageNum"]').send_keys(num)#输入页数
        driver.find_element_by_xpath('//*[@id="judgeFlag"]/a').click()#单击确认框
        html = driver.page_source
        return html

    解决方法:

     加time.sleep(1)   注意:如果sleep时间短的话也不行

    def get_info(num):
        driver.get(url)
        driver.implicitly_wait(10)  # 隐式等待n秒,解释JavaScript是需要时间的,如果短了就无法正常获取数据,如果长了浪费时间;implicitly_wait()给定时间智能等待
        driver.find_element_by_id('pageNum').clear()#清除输入框
        driver.find_element_by_xpath('//*[@id="pageNum"]').send_keys(num)#输入页数
        driver.find_element_by_xpath('//*[@id="judgeFlag"]/a').click()#单击确认框
        time.sleep(1)#一定要停一下,否则加载不出来一直输出第一页
        html = driver.page_source
        return html
  • 相关阅读:
    ArcEngine 地图与布局的联动
    ArcGIS Server安装篇
    AO+C#设置栅格图层基高 制作三维
    ArcGIS 10研究(一) 之 Desktop总体介绍 转载
    linux centos7 增加硬盘
    linux CentOS7安装oracle12c
    java中关于Socket类通信的基本测试程序
    Ubuntu 的中国梦
    我们无需“开始”菜单
    数据库战略高度解析 之系列说明
  • 原文地址:https://www.cnblogs.com/sengzhao666/p/12344369.html
Copyright © 2020-2023  润新知