爬虫之switch_to切换frame标签

iframe是html中常用的一种技术,即一个页面中嵌套了另一个网页,selenium默认是访问不了frame中的内容的,对应的解决思路是driver.switch_to.frame(frame_element)。接下来我们通过qq邮箱模拟登陆来学习这个知识点

代码展示:

from selenium import webdriverurl = 'https://qzone.qq.com'driver = webdriver.Chrome()
driver.get(url)driver.find_element_by_id('switcher_plogin').click()
driver.find_element_by_id('u').send_keys('535646343')
driver.find_element_by_id('p').send_keys('*********')    #这儿有可能会有验证报错,可先用自己的QQ在浏览器上登录一次
driver.find_element_by_id('login_button').click()

运行结果:

出现这个错误是正常的,下面来解决这个错误

示例代码如下:

import timefrom selenium import webdriverurl = 'https://qzone.qq.com'driver = webdriver.Chrome()
driver.get(url)#  切换标签
# driver.switch_to.frame('login_frame')   #  这儿默认写的id,有时候通过id是登录不上的
el_frame = driver.find_element_by_xpath('//*[@id="login_frame"]')
driver.switch_to.frame(el_frame)# switcher_plogin
# 无法定位问题,浏览器页面加载的内容比较多加载比较慢,这种情况我们可以做一个简单休眠保证页面加载完成
driver.find_element_by_id('switcher_plogin').click()
driver.find_element_by_id('u').send_keys('535646343')
driver.find_element_by_id('p').send_keys('*********')
driver.find_element_by_id('login_button').click()time.sleep(100)

  • 参考代码:

    import time
    from selenium import webdriverdriver = webdriver.Chrome()url = 'https://mail.qq.com/cgi-bin/loginpage'
    driver.get(url)
    time.sleep(2)login_frame = driver.find_element_by_id('login_frame') # 根据id定位 frame元素
    driver.switch_to.frame(login_frame) # 转向到该frame中driver.find_element_by_xpath('//*[@id="u"]').send_keys('1******6@qq.com')
    time.sleep(2)driver.find_element_by_xpath('//*[@id="p"]').send_keys('******')
    time.sleep(2)driver.find_element_by_xpath('//*[@id="login_button"]').click()
    time.sleep(2)"""操作frame外边的元素需要切换出去"""
    windows = driver.window_handles
    driver.switch_to.window(windows[0])content = driver.find_element_by_class_name('login_pictures_title').text
    print(content)driver.quit()
    
  • 总结:

    • 切换到定位的frame标签嵌套的页面中

      • driver.switch_to.frame(通过find_element_by函数定位的frame、iframe标签对象)
    • 利用切换标签页的方式切出frame标签

      • windows = driver.window_handles
        driver.switch_to.window(windows[0])
        

爬虫之switch_to切换frame标签相关推荐

  1. Python爬虫之selenium对标签页切换、切换frame标签、cookie处理、执行js代码、开启无界面、以及使用代理ip和替换user-agent等方法

    一.selenium对标签页切换.切换frame标签.cookie处理.执行js代码.开启无界面.以及使用代理ip和替换user-agent等方法 (一).selenium标签页的切换 当seleni ...

  2. Selenium之定位及切换frame(iframe)

    总有人看不明白,以防万一,先在开头大写加粗说明一下: frameset不用切,frame需层层切! 很多人在用selenium定位页面元素的时候会遇到定位不到的问题,明明元素就在那儿,用firebug ...

  3. selenium之定位以及切换frame

    总有人看不明白,以防万一,先在开头大写加粗说明一下: frameset不用切,frame需层层切! 很多人在用selenium定位页面元素的时候会遇到定位不到的问题,明明元素就在那儿,用firebug ...

  4. 自动化测试——多窗口切换和切换frame

    这里写目录标题 一.多窗口切换 1.base.py:公共代码 2.切换句柄的方式1,通过for循环 3.切换句柄的方式2,通过索引切换 4.源代码 二.frame窗口 1.什么是frame? 2.Fr ...

  5. 获取frame 标签里#documents里面的内容

    最近几天在爬一个网站,里面有frame标签. 今天有想获取frame标签下面#documents里面的内容,查了一晚上的资料,幸好找到,明天可以交差了... 一个有frame标签的网站,http:// ...

  6. python+selenium+new——窗口——网页——切换窗口——切换frame——alert弹窗

    from selenium import webdriver driver = webdriver.Firefox() # 指定浏览器驱动 #对象实例化 ----------------------- ...

  7. python爬虫提取a标签_Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释

    一.Tag(标签)对象 1.Tag对象与XML或HTML原生文档中的tag相同. from bs4 import BeautifulSoup soup = BeautifulSoup('Extreme ...

  8. html frame跳转实例,HTML frame标签怎么用?frame标签的具体使用实例

    本篇文章主要为大家讲述的是关于HTML frame标签的用法,还有关于frame标签中的属性介绍.还有关于frame标签的使用实例,下面就让我们一起来看看这篇文章吧 首先我们先看看HTML frame ...

  9. html5点击切换选项卡,简单纯js实现点击切换TAB标签实例

    一个不需要jQuery实现的tab选项卡切换效果,代码简洁易用. 默认是鼠标悬停显示tab效果,可将其中的onmouseover 修改为 onclick 点击效果 使用方法: 1.将附件中的index ...

最新文章

  1. windows7安装django并创建第一个应用
  2. git cherry-pick改写提交
  3. 编程用的记事本软件_数控常用编程软件那么多,你用哪一种?
  4. 修改Visual Stdio 2010界面,以及添加一些其它VS2010的插件
  5. codeforces 486A-C语言解题报告
  6. IDEA怎么开启终端Terminal
  7. intrinsicContentSize和Content Hugging Priority
  8. linux第五周微职位
  9. 蓝桥杯官网 试题 PREV-278 历届真题 双向排序【第十二届】【省赛】【研究生组】【C++】【C】【Java】【Python】四种解法
  10. 软件分享 | 第十三期 全球最牛的资源下载神器IDM
  11. WIFI信道频率对应
  12. 如何理解 图像傅里叶变换的频谱图
  13. Oracle安装之后电脑变慢
  14. 日本知名汽车零部件公司巡礼系列之株式会社70
  15. HTML5期末大作业:旅游网页设计与实现——旅游风景区网站HTML+CSS+JavaScript 景点静态网页设计 学生DW静态网页设计
  16. C++ 统计n个学生三门课的平均成绩,统计各学生三门课的平均成绩。
  17. cuda编译错误 ptxas fatal : Unresolved extern function xxxx
  18. 深度解析Istio系列之策略与遥测篇
  19. siteservercms 缺点_Siteserver CMS 远程模板下载Getshell漏洞
  20. 自动控制原理是计算机学科吗,自动控制原理是自动化学科的重要理论基础(基本概念).doc...

热门文章

  1. 超越Google,快手落地业界首个万亿参数推荐精排模型
  2. 中科大“九章”历史性突破,但实现真正的量子霸权还有多远?
  3. 百度「AI战疫」:首次开源肺炎CT影像分析AI模型,让诊断从分钟到秒
  4. 程序员请收好:10个非常有用的Visual Studio Code插件
  5. 20行Python代码说清“量子霸权”
  6. 学点基本功:机器学习常用损失函数小结
  7. 新一届最强预训练模型上榜,出于BERT而胜于BERT
  8. 技术详解 | 如何用GAN实现阴影检测和阴影去除?
  9. 必读 | 在转行AI之前,先了解下2018年人工智能发展的八大趋势
  10. 面试官问:大量的 TIME_WAIT 状态 TCP 连接,对业务有什么影响?怎么处理?