1. 程式人生 > >應用behave行為驅動框架實現QQ郵箱的登入

應用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命令即可開始執行