应用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命令即可开始运行

猜你喜欢

转载自www.cnblogs.com/xqq-admin-content/p/10034073.html
今日推荐