为了更好地定位元素,首先要仔细分析某个系统登陆时,他的登陆页面到底有几个iframe元素,当有多个时,切登陆框的iframe是独立的话,须要先把frame切换到登陆的iframe上,这样才能对其上面的元素进行一系列操做!!python
如图所示是QQ邮箱的登陆页面框架
分析HTML对应的dom树结构是什么样的,是否此登陆框是在另外一个独立的iframe上dom
从上面的QQ邮箱登陆页面的HTML代码截图可看出,登陆框是独立的在id=login_frame上,若是想要切换登陆方式为【用户名登陆】,则须要先经过switch_to.frame('login_frame')先切换frame,而后找到【帐号密码登陆】元素并进行【点击】操做,则可成功切换到【用户名密码登陆】,继而找到用户名和密码输入框元素,并向其输入对应的值,找到【登陆】元素,并点击,便可实现QQ邮箱的登陆测试
一、代码目录结构:url
注意:spa
(1)behave行为驱动框架,对其目录结构有固定的格式:必须含有一个名为features的dictionary,在这个目录下,又有environment命令行
.py & xxx.feature文件 & 名为steps的dictionary。blog
(2)steps文件夹下的python文件的命名必须保持前缀和xxx.feature的名称保持一致,只有这样在运行features文件时才能匹配调用。utf-8
如:QQ_Email.feature ,则其对应的steps文件中的python文件必须以:QQ_Email_XXXXX.py命名element
具体代码以下:
注意: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命令便可开始运行
