爲了更好地定位元素,首先要仔細分析某個系統登陸時,他的登陸頁面到底有幾個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命令便可開始運行
