學慣用python來自動化測試(一)
Python是門挺強大的語言,同常見的C,Java,C#等有幾點不同,一個是定義變數前不用定義類型,直接賦值就行,非常方便,另一個是沒有begin,end,{,}這些麻煩的東西,回車空格就是這些東西的替代;第三點就是C語言中最讓人討厭的判斷語句中的==號可以在編譯時直接發現寫成=的情況了。
目前Python使用最多的一個是網頁的自動化測試,另一個是數據分析。我最近抽空學習了下自動化測試。Python的自動化測試用的是selenium模塊,可以模擬Chrome,IE,FireFox等瀏覽器,但是要下載對應的模擬執行文件先。下載好後,就可以模擬瀏覽器進行自動化測試了。下面是學習筆記。
(一)首先是文件開頭上要寫
from selenium import webdriver #引入selenium模塊。
from selenium.webdriver.common.keys import Keys #模擬鍵盤輸入。
import random,time #經常要用到,一個是產生隨機數,一個是時間操作的功能
(二)最簡單的一段功能:
browser = webdriver.Chrome() #啟動chrome瀏覽器
time.sleep(3) #停頓3秒 browser.maximize_window() #瀏覽器窗口最大化OutputLogin = Login(browser,username, password) #登錄網頁的函數,後續講解
time.sleep(int(random.uniform(1, 10)))#隨機產生一個1到9秒的隨機整數,然後等待這個時間
browser.quit() #退出瀏覽器
(三)定義一個登錄系統的函數
def Login(browser,username, password): #要有冒號
browser.get(網頁的URL) #瀏覽器登錄網頁的URL
time.sleep(3) try: # find user login input box elem_user=browser.find_element_by_id("username")#這個是通過find_element_by_id函數來尋找定位網頁上的id為username的控制項
elem_user.clear() elem_user.send_keys(username)#然後向這個控制項發送username的值
time.sleep(1)# find pwd input box
elem_pwd=browser.find_element_by_id("password") elem_pwd.clear() elem_pwd.send_keys(password) time.sleep(1) # enter RETURN in pwd box to activate elem_pwd.send_keys(Keys.RETURN)#然後向這個控制項發送回車鍵,注意,如果是鍵盤上的回車,SHIFT,CONTROL鍵之類的,要用Keys.控制鍵的名稱作為輸入。
return username " login successfully
"
return username " login failed
"
python是非常簡潔的語言,函數之類的都沒有begin,end,{,}這些麻煩的東西
(四)定位元素
自動化測試中常用的功能是通過各種元素,例如id,class,xpath,css等內容來尋找定位元素,而且不光可以定位一個元素,還可以定位一隊元素,然後逐個操作。
#定義一個定位操作單個元素的函數
def Signup_Click(browser):
input3 = browser.find_element_by_class_name("checkbtn") try: input3.click() return "Signup successfully
"
" pass
#定義一個定位操作多個元素的函數
def Love_Clicks(browser,k):
inputs2 = browser.find_elements_by_class_name("love")#注意,是elements,不是element,複數形式
for input2 in inputs2:
try:input2.click()
except: pass return str(i)+" Love successfully"
(五)鍵盤和滑鼠操作
Python也可以模擬滑鼠和鍵盤的操作,不過要注意的是鍵盤帶來的屏幕游標位置的挪動和滑鼠在屏幕上的挪動位置,兩個是不同的。
首先要在文件頭引入
from selenium.webdriver.common.action_chains import ActionChains
#定義一個函數
def Transfer_Clicks(browser):browser.execute_script("window.scrollBy(0,-document.body.scrollHeight)","")
#這個是執行一段Javascript函數,將網頁滾到到網頁頂部。
try: inputs1 = browser.find_elements_by_class_name("feedAttr_transfer") for input1 in inputs1: try: ActionChains(browser).click(input1).perform()#模擬滑鼠點擊控制項input1,此時的滑鼠位置在input1處
browser.execute_script("window.scrollBy(0,200)","") #向下滾動200個像素,滑鼠位置也跟著變了ActionChains(browser).move_by_offset(0,-80).perform()
#向上移動滑鼠80個像素,水平方向不同
ActionChains(browser).click().perform()#滑鼠左鍵點擊
ActionChains(browser).key_down(Keys.TAB).perform() #模擬tab鍵的輸入ActionChains(browser).send_keys(Keys.ENTER).perform()
#模擬輸入ENTER鍵 except: passexcept:
pass return "Transfer successfully"
(六)文件操作
讀取目錄下所有TXT文件,並寫入TXT文檔中
def Write_Txt(Dist): #Dist是目錄 Big_Txt = 『111』fw = open (%s %(Dist Big_Txt .txt),a)
#打開Dist目錄下的111的txt文件
Array=[]for item in os.listdir(Dist): # 遍歷指定目錄
if os.path.isfile(Dist item) and item.endswith(.txt) : # 判斷是否為.txt文件 f = open((Dist item),r) # 打開文件 line=f.readline()#讀取一行數據,如果是多行數據,就是readlines,然後在循環處理 for i in range(2): fw.write(line) #寫入文件 f.close() #關閉文件 fw.close()(七)點擊網頁
python可以實現刷點擊量的功能,用webbrowser就行
首先文件頭引入
import os,time,sys,re,random
import webbrowser
#定義打開網頁
def Open_Blog(k,j): lines = open(e:\temp.txt).readlines() #打開文件,讀入每一行的URL地址 for s in lines: if s.find(URL)>0: UrlTemp = URLfor m in range(j): #輪詢次數
webbrowser.open_new_tab(UrlTemp)##打開新的網頁tab頁 time.sleep(int(random.uniform(1, k)))#隨機等待一定時間 os.system(taskkill /F /IM 360chrome.exe)#需要定時關閉瀏覽器的進程,不然會死機, OutputBlog = open str(打開數量) pages
推薦閱讀:
※Python實踐-Python自動化測試常用庫整理
※web自動化測試整個流程,和相互關係??
※WEB自動化3:準備Selenium環境
※Jmeter專輯
※性能測試基礎