自動化測試模型可以看作自動化測試框架與工具設計的思想。
線性指令碼中每個指令碼都相互獨立,且不會產生其他依賴與呼叫,其實就是簡單模擬使用者某個操作流程產生的指令碼。
from selenium importwebdriver
from time import
sleep
driver=webdriver.chrome()
driver.get(
"")#根據id=kw定位元素,並輸入python
driver.find_element_by_id("
kw").send_keys("
python")
sleep(1)
#清除輸入框內容
driver.find_element_by_id("kw"
).clear()
sleep(1)
#根據name=kw定位元素,並輸入python
driver.find_element_by_name("
wd").send_keys("
python")
sleep(2)
#根據id=su定位元素,並點選
driver.find_element_by_id("su"
).click()
sleep(3)
driver.quit()
線性模型雖然每個用例都可以拿出來獨立執行,但是用例之間重複**很多,開發、維護成本高。其實把重複的操作**封裝為獨立的公共模組,當用例執行時需要用到這部分,直接呼叫即可,這就是模組驅動的方式。比如登入系統、退出登入、截圖函式等等。
from selenium importwebdriver
from time import
sleep
class
login():
defuser_login(self,driver):
driver.find_element_by_link_text(
'賬號密碼登入
').click()
driver.find_element_by_name(
'all
').clear()
driver.find_element_by_name(
'all
').send_keys('
51zxw')
driver.find_element_by_name(
'pwd
').clear()
driver.find_element_by_name(
'pwd
').send_keys('
123456')
driver.find_element_by_class_name(
'btn-primary
').click()
defuser_logout(self,driver):
driver.find_element_by_link_text('退出
').click()
sleep(2)
driver.switch_to_alert().accept()
if__name__=='
__main__':
driver =webdriver.chrome()
driver.get(
"")driver.implicitly_wait(10)
login().user_login(driver)
login().user_logout(driver)
模組驅動的模型雖然解決了指令碼的重複問題,但是需要測試不同資料的用例時,模組驅動的方式就不很適合了。
介面自動化中測試用例和指令碼的分離、測試不同的賬號執**況、操作的流程相同但是資料不同等等這些用資料驅動吧。
資料驅動就是資料的改變從而驅動自動化測試的執行,最終引起測試結果的改變。
裝載資料的方式可以是列表、字典或是外部檔案(txt、csv、xml、excel),目的就是實現資料和指令碼的分離。
from selenium import webdriverfrom time import sleep
class login():
def user_login(self,driver,name,pwd):
driver.find_element_by_link_text('賬號密碼登入').click()
driver.find_element_by_name('all').clear()
driver.find_element_by_name('all').send_keys('name')
driver.find_element_by_name('pwd').clear()
driver.find_element_by_name('pwd').send_keys('pwd')
driver.find_element_by_class_name('btn-primary').click()
def user_logout(self,driver):
driver.find_element_by_link_text('退出').click()
sleep(2)
if __name__ == '__main__':
driver = webdriver.chrome()
driver.get("")
driver.implicitly_wait(10)
login = login()
login.user_login(driver, "test_name", 'test_pwd')
sleep(3)
login.user_logout(driver)
login.user_login(driver, "test_name2", 'test_pwd2')
sleep(5)
login.user_logout(driver)
通過關鍵字的改變引起測試結果的改變叫關鍵字驅動測試。
selenium ide也是一種傳統的關鍵字驅動的自動化工具,robot framework 是乙個功能更強大的關鍵字驅動測試框架
from selenium importwebdriver
import
time
class
keytest():
def__init__(self,br=none):
if"ie" ==br:
self.driver =webdriver.ie()
elif
"firefox
" ==br:
self.driver =webdriver.firefox()
else
: self.driver =webdriver.chrome()
defopen(self,url):
self.driver.get(url)
defsend_keys(self,text):
try:
self.driver.find_element_by_id('kw
').send_keys(text)
except
:
print("
click fail!")
raise
defclick(self,id):
try:
self.driver.find_element_by_id(id).click()
except
:
print("
click fail!")
raise
defsleep(self,times):
time.sleep(int(times))
defquit(self):
self.driver.quit()
if__name__ == '
__main__':
dr =keytest()
#開啟瀏覽器
dr.open('
')#輸入"自動化測試"
dr.send_keys('
自動化測試')
# dr.click('su'
) dr.quit()
selenium 自動化測試。
第一步安裝 谷歌瀏覽器。第三步編寫測試測試指令碼 第四步 安裝selemium coding utf 8 引入webdriver和unittest所需要的包 from selenium import webdriver from selenium.webdriver.common.by import...
Python自動化測試 Selenium
第乙個selenium就。先show from selenium import webdriver driver webdriver.firefox driver.get assert oxcoder decode utf 8 in driver.title print driver.title d...
自動化測試selenium(四)
三 用例的執行順序 四 unittest斷言 unittest 各元件的關係為 test fixture 初始化和清理測試環境,比如建立臨時的資料庫,檔案和目錄等,其中 setup 和 setdown 是最常用的方法 test case 單元測試用例,testcase 是編寫單元測試用例最常用的類 ...