一、问题描述:
使用百度搜索QQ邮箱,点击邮箱官网进入QQ邮箱首页后,切换到iframe中报错(无法找到元素)。

二、代码描述:

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.baidu.com')
souSuo=driver.find_element('id', 'kw')
souSuo.click()
souSuo.clear()
souSuo.send_keys('QQ邮箱')
driver.find_element('id', 'su').click()
time.sleep(2)
driver.find_element('xpath', '//*[@id="content_left"]/div[1]/div/div[1]/h3/a[1]').click()
time.sleep(2)
# driver.get("https://mail.qq.com/")
iframe=driver.find_element("xpath", "//iframe[@id='login_frame']")
driver.switch_to.frame(iframe)

该代码执行后会报错,而将4-12行改为driver.get("https://mail.qq.com/")
代码不再报错。

原因:当使用百度搜索邮箱,再点击打开QQ邮箱首页之后,我们看到页面切换到QQ邮箱首页,而实际上后续的自动化操作依旧是在百度页面上进行的。因此直接切换到iframe会报错。

三、解决方法:
h=driver.window_handles获取所有句柄,再通过driver.switch_to.window(h[1])切换到第二个窗口,然后再进行后续操作。

代码如下:

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.baidu.com')
souSuo=driver.find_element('id', 'kw')
souSuo.click()
souSuo.clear()
souSuo.send_keys('QQ邮箱')
driver.find_element('id', 'su').click()
time.sleep(2)
driver.find_element('xpath', '//*[@id="content_left"]/div[1]/div/div[1]/h3/a[1]').click()
time.sleep(2)
# driver.get("https://mail.qq.com/")
h = driver.window_handles#获取所有句柄
driver.switch_to.window(h[1])#切换到第二个窗口
time.sleep(2)
iframe=driver.find_element("xpath", "//iframe[@id='login_frame']")
driver.switch_to.frame(iframe)

四、完整测试代码

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.baidu.com')
souSuo=driver.find_element('id', 'kw')
souSuo.click()
souSuo.clear()
souSuo.send_keys('QQ邮箱')
driver.find_element('id', 'su').click()
time.sleep(2)
driver.find_element('xpath', '//*[@id="content_left"]/div[1]/div/div[1]/h3/a[1]').click()
time.sleep(2)
# driver.get("https://mail.qq.com/")
h = driver.window_handles#获取所有句柄
driver.switch_to.window(h[1])#切换到第二个窗口
time.sleep(2)
iframe=driver.find_element("xpath", "//iframe[@id='login_frame']")
driver.switch_to.frame(iframe)driver.find_element('id', 'u').click()
driver.find_element('id', 'u').send_keys('user')
driver.find_element('id', 'p').click()
driver.find_element('id', 'p').send_keys('password')
driver.find_element('id', 'login_button').click()

自动化测试QQ邮箱登录【问题及完整测试代码】相关推荐

  1. web自动化测试——QQ邮箱登录之Bussiness(login)登录操作

    from Commomlib.Commonlib import Commonclass Login(Common):'''继承Common类'''def login(self, user, pwd): ...

  2. HTML+CSS 模拟QQ邮箱登录界面

    模拟QQ邮箱登录界面 index.html <!DOCTYPE html> <html lang="en"> <head><meta ch ...

  3. [实战篇]关于QQ邮箱登录之测试用例

    今天,我们来分析一个关于QQ邮箱登录模块的测试用例: 邮箱登录模块它就只有两个,一个是登录账号,一个是登录密码.在上一篇注册模块的文章中分析过,如果是一个输入框的话,你就直接对这一个输入框进行等价类划 ...

  4. python实现kindle每天推送博客1----kindle推送原理,python实现qq邮箱登录及邮件发送

    kindle想每天看新闻,看博客, 其实自己用python写个代码就能很简单实现了. 1.kindle推送原理 kindle不仅可以买书看书,还可以自己推送内容 原理很简单,往你个人的kindle邮箱 ...

  5. QQ邮箱登录PC布局实战笔记二

    本文目标: 尽量100%还原QQ邮箱登录界面头部区域,掌握div之间的位置关系,掌握常见的定位技术和浮动技术.将头部所需要的HTML标签进行仔细学习. 开始准备: 浏览器:Firefox/Chrome ...

  6. QQ邮箱登录PC布局实战笔记一

    QQ邮箱布局实战(PC)笔记<一> 开篇说明: 这个系列的笔记算是作为我复习前端知识的一个系列吧.前端的知识很杂,各种小技巧很多,而且更新变化很快,不像我们在校学习的那些计算机基础理论知识 ...

  7. Java实现QQ邮箱登录,实现邮箱验证码三分钟失效,代码实现发送验证码和登录全过程思路。内附完整项目。

    温馨提示: 如果感觉本文章困难,请移步简单的邮箱验证,不涉及数据库和Redis,点击我进行跳转 使用技术: 1. MySQL数据库 2. Redis缓存(极其简单)点击此处学习 功能介绍: 发送验证码 ...

  8. 自动化测试——QQ邮箱登陆

    Selenium+TestNG+Maven+IDEA 前言: Selenium是Web UI自动化测试套件之一,它支持不同浏览器(CHrome,Mozilla Firefox,Internet Exp ...

  9. java qq邮箱登录_SpringBoot实现QQ邮箱注册和登录

    1.登录注册思路 这是一个使用spring boot做的一个qq邮箱注册和登录的项目. 没写前端页面,使用postman测试.有截图详细. 1.1.思路 注册:通过输入的邮箱发送验证码,检验前端传来的 ...

最新文章

  1. RecyclerView Adapter中notifyDataSetChanged 的作用
  2. 【java线程】锁机制:synchronized、Lock、Condition
  3. tf_geometric的安装
  4. 苹果浏览器移动端click事件延迟300ms的原因以及解决办法
  5. Wireshark抓包—maybe caused by 'IP chechsum offload'?
  6. 21天让你成为Horizon View高手—Day11:手动池的创建
  7. android.content.res.Resources$NotFoundException: String resource ID #0x0
  8. Virtuabox 虚拟机克隆方法
  9. 修改FTP服务器时长,连接ftp服务器的时长怎么设置
  10. vs code html插件_VS插件CodeRush全新发布v20.1.7|支持HTML
  11. 搭建springmvc项目遇到的问题
  12. 地图poi数据库下载
  13. 从Gaussian 09的Hartree-Fock计算的fchk文件转换到Columbus的mocoef文件的脚本
  14. w ndows 那个比较好用,DOS工具箱哪个好用?DOS工具箱盘点
  15. 亲属卡额度是什么意思_疯狂申请“平安大润发卡”,你会白干一场
  16. 计算机电路中bga是什么,什么是BGA BGA的结构和性能
  17. 504网站服务器传输超时,504源服务器链接超时cdn
  18. vue单独设置页面背景
  19. java计算机毕业设计口红专卖网站MyBatis+系统+LW文档+源码+调试部署
  20. mix2线刷开发板救砖_小米MIX 2手机一键线刷救砖教程,轻松刷回官方系统

热门文章

  1. 数据库DDL(Data Definition Language,数据定义语言)知识点
  2. Unix.Trojan.DDoS_XOR-1、Linux.Trojan.Agent(Linux.BackDoor.Gates.5)木马清理
  3. SpringCloud 教程 (二) 服务链路追踪(Spring Cloud Sleuth)
  4. Unity3D摄像机跟随人物移动脚本
  5. 六种方法实现JavaScript数组去重
  6. arp嗅探(windows)
  7. cannot import name ‘_registerMatType‘ from ‘cv2.cv2‘
  8. 数据库云管平台将成为企业数字化转型的重要工具
  9. pythonshell怎么用中文_python 在powershell中运行中文乱码时有时无怎么办?
  10. freemaker生成doc文档(特殊字符导致异常)