应用behave行为驱动框架实现QQ邮箱的登录

为了更好地定位元素,首先要仔细分析某个系统登录时,他的登录页面到底有几个iframe元素,当有多个时,切登录框的iframe是独立的话,需要先把frame切换到登录的iframe上,这样才能对其上面的元素进行一系列操作!!

如图所示是QQ邮箱的登录页面

分析HTML对应的dom树结构是什么样的,是否此登录框是在另一个独立的iframe上

从上面的QQ邮箱登录页面的HTML代码截图可看出,登录框是独立的在id=login_frame上,如果想要切换登录方式为【用户名登录】,则需要先通过switch_to.frame(‘login_frame‘)先切换frame,然后找到【账号密码登录】元素并进行【点击】操作,则可成功切换到【用户名密码登录】,继而找到用户名和密码输入框元素,并向其输入对应的值,找到【登录】元素,并点击,即可实现QQ邮箱的登录

1、代码目录结构:

注意:

(1)behave行为驱动框架,对其目录结构有固定的格式:必须含有一个名为features的dictionary,在这个目录下,又有environment

.py  & xxx.feature文件 & 名为steps的dictionary。

(2)steps文件夹下的python文件的命名必须保持前缀和xxx.feature的名称保持一致,只有这样在运行features文件时才能匹配调用。

如:QQ_Email.feature ,则其对应的steps文件中的python文件必须以:QQ_Email_XXXXX.py命名

具体代码如下:

注意:behave中的.feature是一种以自然语言来描述功能,以及测试场景的,可以按照自己的想要形容的句子来写,包括参数也可以写在其中;

根据.feature文件,来写对应的python测试脚本代码:

# -*-conding:utf-8 -*-from behave import *import time

@Given(‘go to QQ_Email login page {url}‘)def Load_QQ_Emai_URL(context,url):    context.driver.get(url)    time.sleep(2)    #在我们定位元素时,要观察对应的HTML页面代码,看其登录框是否是在另一个嵌入式的iframe中,如果是,则需要切换到指定iframe    context.driver.switch_to.frame(‘login_frame‘) #切换到登录的iframe上    time.sleep(2)    context.driver.find_element_by_id(‘switcher_plogin‘).click()

@When(‘login with correct usernmae {qq_email_username} and correct password {qq_email_pwd}‘)def Login_QQ_Email(context,qq_email_username,qq_email_pwd):    #首先,默认的登录页面是扫码登录页面,此时我们需要切换到【用户名登录】    context.driver.find_element_by_id(‘u‘).clear()    context.driver.find_element_by_id(‘u‘).send_keys(qq_email_username)    context.driver.find_element_by_id(‘p‘).clear()    context.driver.find_element_by_id(‘p‘).send_keys(qq_email_pwd)    context.driver.find_element_by_id(‘login_button‘).click()    time.sleep(5)

@Then(‘the page will jump to a admin page that conlude username {admin}‘)def Check_Result(context,admin):    #成功登录页面后,其实此时已经有两个handler了,所以需要切换到已经登录成的页面上    context.driver.switch_to_default_content() #退出frame    context.driver.switch_to.frame(‘mainFrame‘)    msg_ele = context.driver.find_element_by_id(‘today_alias‘)    assert msg_ele.text == admin  #设置断言,看是否相等,如果相等,则说明登录成功!

运行features文件:注意:在cmd命令行中,通过cd命令,进入含有features文件夹的路径即可然后键入:behave命令即可开始运行

原文地址:https://www.cnblogs.com/xqq-admin-content/p/10034073.html

时间: 2024-08-02 00:09:21

应用behave行为驱动框架实现QQ邮箱的登录的相关文章

QQ邮箱批量登录器

转载请注明出处! 原文链接:http://blog.csdn.net/zgyulongfei/article/details/42045815 ---------------------------------- 对于从事邮件营销的人来说,最爱的就是批量处理工具了,例如邮件群发.邮箱采集.邮箱批量登录等工具... 本文介绍的是一款qq邮箱批量登录工具,具体作用与价值当然只有需要的人才懂啦 ^_^ 详细介绍如下: ---------------------------------- v1版本 20

Splinter学习--初探3,两种方式登录QQ邮箱

目前,qq邮箱的登录方式有: 1.利用账号.密码登录 2.快捷登录,前提是你本地已有qq账号登录中 和前面一样,还是先到qq邮箱登录首页,审查页面元素,找到我们进行登录操作所相关的链接.按钮或是输入框. QQ邮箱登录首页:https://mail.qq.com/ 打开登录页,可以看到两种登录方式选择,如下图:     审查页面元素,发现快速登录方式,对应ID为“qlogin_list“的一个div,而账号.密码登录方式对应ID为“web_login”的一个div,且这两个div元素都位于ID为“

[flask实践] 解决qq邮箱/mysql的相关配置问题

笔者经过flask web(Miguel著,封面是一条狗)一书的学习,打算实现一个旅游类网站,在此过程中发现,相对于书中的flasky博客程序,需要作出一些改变: 1. 注册邮箱:国内要使用126,qq等邮箱.默认读者了解过flasky邮件的实现方式,而使用126.qq邮箱的不同之处有: 第一,邮箱端口 ['MAIL_PORT'] = 465 不同于gmail的587端口 第二,使用协议 ['MAIL_USE_SSL'] = True 不同于gmail的TLS协议        第三,用户名  

初解,Scala语言中基于Actor的并发编程的机制,并展示了在Spark中基于Scala语言的Actor而产生的消息驱动框架Akka的使用,

Scala深入浅出实战中级--进阶经典(第66讲:Scala并发编程实战初体验及其在Spark源码中应用解析)内容介绍和视频链接 2015-07-24 DT大数据梦工厂 从明天起,做一个勤奋的人 看视频.下视频,分享视频 DT大数据梦工厂-Scala深入浅出实战中级--进阶经典:第66讲:Scala并发编程实战初体验及其在Spark源码中的应用解析 本期视频通过代码实战详解了Java语言基于加锁的并发编程模型的弊端以及Scala语言中基于Actor的并发编程的机制,并展示了在Spark中基于Sc

java实现qq邮箱每天定时发送邮件

本周四的时候去学校的某机构值班,主要工作是帮老师送文件,干一些杂活.那天没有什么活儿,于是想起用Java实现发送邮件和接收邮件的功能.前几天接触过一点quartz框架,用来实现定时开始任务的功能.于是,这里把他们结合起来了,实现定时发送邮件,向暗恋的女神表白的用处(yiyin). 我没有研究过quartz框架,这里主要是从实用的角度讲一下.在使用时,需要编写任务类和触发器类两部分的代码.任务类是你想实现的功能部分,需要实现Job接口.触发器类设置任务的定时执行时间. 在java实现email中,

使用plupload做一个类似qq邮箱附件上传的效果

公司项目中使用的框架是springmvc+hibernate+spring,目前需要做一个类似qq邮箱附件上传的功能,暂时只是上传小类型的附件 处理过程和解决方案都需要添加附件,处理过程和解决方案都可以添加多个附件,也可一个都不添加 以其中一个为例:(文件保存到了数据库中),有关plupload的内容可参考:http://www.360doc.com/content/14/0714/03/552866_394228686.shtml 首先是po package cn.com.plupload.p

[麦先生]在Laravel框架里实现邮箱验证---发送邮件

在经过一段时间的使用后,发现在项目中很多地方需要用到用户验证,以短信验证和邮箱验证为主流趋势,小麦总结了如果在Laravel框架中实现发送邮件功能,以后会陆续更上如何实现短信验证..... 在.env文件下 1.配置Laravel文件 MAIL_DRIVER=smtp  //建议使用smtp方式 MAIL_HOST=smtp.163.com  //建议使用163邮箱 QQ邮箱会有报错 MAIL_PORT=25        //smtp 默认为25 MAIL_USERNAME=null   //

ios11添加 QQ 邮箱账户

iOS 11 设置界面稍微有点变化,添加邮件账户需要进入: 设置/账户与密码/添加账户/其他/添加邮件账户 输入邮件地址+密码,全名可有可无,密码不是邮箱密码,而是开启 pop3/SMTP 服务后,下图的授权码. 另外,为了确保方便添加邮箱账户,尽量让 QQ 邮箱密码和 QQ 密码一致. 如果不这样操作,就算添加了邮箱,也会提示可能无法收发邮件.

Discuz常见小问题-如何设置QQ邮箱注册验证

开启POP3/SMTP服务器,需要发送短信,然后点击我已发送,得到一个指定的密码 ? 开启之后得到的授权码 ? 开启IMAP/SMTP还需要发送一次短信,得到一个另外的授权码 ? 然后在后台设置为下面的信息(SMTP身份验证密码不是你的QQ邮箱密码,而是上面得到的密码) ? 在全局-注册与控制访问中设置为Email验证 ? ? ? ? ? ? ? ? ? ?