zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    shift
    start
    exit
    call
    goto
    Activity生命周期(二)
    color 和 mode
    pause 和 title
    day 4 飞机大战-面向对象
    day 3 创建窗口,移动-函数版
  • 原文地址:https://www.cnblogs.com/sengzhao666/p/12344369.html
Copyright © 2011-2022 走看看