日本电影一区二区_日本va欧美va精品发布_日本黄h兄妹h动漫一区二区三区_日本欧美黄色

軟件測試工程師必備:Web自動化實踐全紀(jì)錄,10分鐘教你學(xué)自動化(自動化 軟件測試)

本文主要內(nèi)容包括以下幾個功能的實現(xiàn):

·文章發(fā)布

·刪除單條文章用例

·刪除所有文章用例

·添加ID標(biāo)簽實現(xiàn)元素定位

·登錄功能驗證碼識別

軟件測試工程師必備:Web自動化實踐全紀(jì)錄,10分鐘教你學(xué)自動化(自動化 軟件測試)

添加文章

添加文章頁面:

軟件測試工程師必備:Web自動化實踐全紀(jì)錄,10分鐘教你學(xué)自動化(自動化 軟件測試)

實現(xiàn)思路:

用例設(shè)計:包括添加成功和添加失敗兩條case。

1.元素定位

2.寫標(biāo)題->內(nèi)容->點擊發(fā)布

3.驗證:toast彈窗文本內(nèi)容正確

腳本實現(xiàn):

from selenium.webdriver import ActionChains

from selenium.webdriver.common.by import By

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from time import sleep

from basic.admin_login import Test_admin_login

class TestArticle(object):

def __init__(self, login):

self.login = login

# 測試添加文章

def test_add_ok(self):

title = '我的文章'

content = '我的文章內(nèi)容'

expected = '文章保存成功。'

#定位左側(cè)文章列表

#文章

self.login.driver.find_element_by_xpath('//*[@id="sidebar-menu"]/li[4]/a/span[1]').click()

sleep(1)

#文章管理

self.login.driver.find_element_by_xpath('//*[@id="sidebar-menu"]/li[4]/ul/li[1]/a').click()

sleep(1)

#新建

self.login.driver.find_element_by_xpath('/html/body/div/div/section[3]/div/div/div/div[1]/div/div/a').click()

sleep(1)

#定位文章區(qū)域

#標(biāo)題

self.login.driver.find_element_by_id('article-title').send_keys(title)

sleep(1)

#進入iframe

frame1=self.login.driver.find_element_by_xpath('//*[@id="cke_1_contents"]/iframe')

self.login.driver.switch_to.frame(frame1)

sleep(1)

#文章內(nèi)容

self.login.driver.find_element_by_xpath('/html/body').send_keys(content)

#退出frame

self.login.driver.switch_to.default_content()

#發(fā)布按鈕

self.login.driver.find_element_by_class_name('btn-primary').click()

#toast定位

loc=(By.CLASS_NAME,"toast-message")

#等待toast出現(xiàn)

WebDriverWait(self.login.driver,5).until(EC.visibility_of_element_located(loc))

#toast文本

message=self.login.driver.find_element(*loc).text

#斷言判斷toast文本和期望值相等

assert message==expected

注意點:

1.frame彈窗的切入切出

2.文章內(nèi)容定位頁面檢查時到/html,需要自己手動添加到body下'/html/body'

3.發(fā)送失敗toast彈窗消失很快,可以多次點擊幾下定位

刪除單條文章用例

刪除文章頁面:

軟件測試工程師必備:Web自動化實踐全紀(jì)錄,10分鐘教你學(xué)自動化(自動化 軟件測試)

實現(xiàn)思路:

用例設(shè)計:刪除成功。

1.鼠標(biāo)懸停在文章標(biāo)題

2.點擊垃圾箱

3.驗證:驗證刪除后文章數(shù)=刪除前文章數(shù)-1

腳本實現(xiàn):

article.py

# 測試刪除單篇文章

def test_delete_one_article_ok(self):

# 文章管理

self.login.driver.find_element_by_xpath('//*[@id="sidebar-menu"]/li[4]/ul/li[1]/a').click()

sleep(1)

#刪除前文章數(shù)

beforenumber=len(self.login.driver.find_elements_by_class_name('jp-actiontr'))

#鼠標(biāo)懸停文章內(nèi)容

a=self.login.driver.find_element_by_xpath('/html/body/div/div/section[3]/div/div/div/div[2]/table/tbody/tr[2]/td[2]/strong/a')

ActionChains(self.login.driver).move_to_element(a).perform()

#刪除

self.login.driver.find_element_by_xpath('/html/body/div/div/section[3]/div/div/div/div[2]/table/tbody/tr[2]/td[2]/div/div/a[3]').click()

sleep(1)

#刪除后文章數(shù)

afternumber=len(self.login.driver.find_elements_by_class_name('jp-actiontr'))

#驗證刪除后文章數(shù)=刪除前文章數(shù)-1

assert beforenumber==afternumber 1

技術(shù)難點:

1.鼠標(biāo)懸停操作:

ActionChains(self.login.driver).movetoelement(a).perform()

2.文章數(shù)目使用len()函數(shù)確認(rèn)

3.所有文章數(shù)目確認(rèn)通過self.login.driver.findelementsbyclassname定位一組elements確認(rèn)

刪除所有文章用例

刪除所有文章頁面:

軟件測試工程師必備:Web自動化實踐全紀(jì)錄,10分鐘教你學(xué)自動化(自動化 軟件測試)

實現(xiàn)思路:

用例設(shè)計:刪除成功。

1.點擊全選復(fù)選框

2.點擊批量刪除

3.驗證:驗證文章數(shù)目=0

實現(xiàn)腳本:

# 測試刪除所有文章

def test_delete_all_article_ok(self):

#文章管理

self.login.driver.find_element_by_xpath('//*[@id="sidebar-menu"]/li[4]/ul/li[1]/a').click()

#點擊全部復(fù)選框

self.login.driver.find_element_by_xpath('/html/body/div/div/section[3]/div/div/div/div[2]/table/tbody/tr[1]/th[1]/input').click()

sleep(1)

self.login.driver.find_element_by_id('batchDel').click()

sleep(1)

WebDriverWait(self.login.driver,5).until(EC.alert_is_present())

alert = self.login.driver.switch_to.alert

alert.accept()

sleep(1)

#文章數(shù)目=0

afternumber = len(self.login.driver.find_elements_by_class_name('jp-actiontr'))

sleep(1)

assert afternumber==0

if __name__ == '__main__':

login = Test_admin_login()

login.login_success()

testArticle = TestArticle(login)

testArticle.test_add_ok()

#testArticle.test_delete_one_article_ok()

testArticle.test_delete_all_article_ok()

總結(jié):

通過上面我們可以發(fā)現(xiàn),自動化用例的實現(xiàn)及用例和功能測試用例基本上是一樣的,相同的操作步驟,相同的驗證方法。只不過是通過腳本的方式展現(xiàn)出來,通過下面的表格再次加深一下印象。

軟件測試工程師必備:Web自動化實踐全紀(jì)錄,10分鐘教你學(xué)自動化(自動化 軟件測試)

添加ID標(biāo)簽實現(xiàn)元素定位

問題情境:

在本地環(huán)境util工具類里有一個封裝好的圖片驗證碼類,實現(xiàn)識別圖片中的驗證碼,需要傳入?yún)?shù)id。

但前端頁面沒有id屬性,需要添加一個id屬性,如下圖:

軟件測試工程師必備:Web自動化實踐全紀(jì)錄,10分鐘教你學(xué)自動化(自動化 軟件測試)

那么,怎么樣才能向前端頁面添加屬性值呢?這里我們使用JS語法。

添加id的思路如下:

首先,通過上圖的img標(biāo)簽找到要處理的HTML元素;

然后,操作這個元素,通過setAttribute添加屬性及屬性值;

注意:js腳本需要放到一個變量中,然后通過self.driver.execute_script(js)執(zhí)行腳本。

實現(xiàn)腳本:

js="document.getElementsByTagName('img')[0].setAttribute('id','captchaimg')"

self.driver.execute_script(js)

驗證是否添加成功:

1.Chrome瀏覽器F12,找到console,輸入腳本:

document.getElementsByTagName('img')[0].setAttribute('id','captchaimg')

軟件測試工程師必備:Web自動化實踐全紀(jì)錄,10分鐘教你學(xué)自動化(自動化 軟件測試)

2.返回element tab下,查看存在id屬性如下圖:

軟件測試工程師必備:Web自動化實踐全紀(jì)錄,10分鐘教你學(xué)自動化(自動化 軟件測試)

上面獲取元素的方法除了標(biāo)簽名稱還有其他方式如:

·getElementById()

·getElementByName()

·getElementByTagName()

·getElementByClassName()

至于何種方法可以根據(jù)源碼查看,源碼有什么用什么方法。

報錯信息

javascript error: Cannot read property 'setAttribute' of undefined

數(shù)組越界

源代碼:

js="document.getElementsByTagName('img')[1].setAttribute('id','captchaimg')"

文檔中一共有一個img標(biāo)簽,下標(biāo)從0開始,所以將1改為0。

修改后:

js="document.getElementsByTagName('img')[0].setAttribute('id','captchaimg')"

上面提供一種處理問題的思路,當(dāng)我們需要某種元素標(biāo)簽時,并且這種標(biāo)簽不存在的情況下我們可以自己利用js語法添加標(biāo)簽并實現(xiàn)調(diào)用。

同時,在遇到selenium本身語法無法解決的問題,可以借助js腳本完成,比如頁面上下滑動、處理時間空間等等。

登錄功能驗證碼識別

一般web網(wǎng)站登錄頁面都會有驗證碼識別功能 ,如果是公司內(nèi)部測試,可以讓開發(fā)人員通過屏蔽驗證碼或者留后門方式輕松跳過,大可不必把時間浪費在驗證碼識別上。

但是,大部分小伙伴一般剛開始接觸自動化時都是自己找的項目,基本上述兩種方法不適用。

下面推薦兩種常用的驗證碼識別方式:

第一種OCR自動識別方式,缺點較復(fù)雜的驗證碼識別不出來。

第二種,第三方API使用,我這里使用的是打碼平臺的,除此之外百度識別或者萬維易源(缺點:調(diào)用繁瑣、費用較高)。

場景:識別下圖的驗證碼。

軟件測試工程師必備:Web自動化實踐全紀(jì)錄,10分鐘教你學(xué)自動化(自動化 軟件測試)

OCR自動識別的原理

在這里我們需要使用pytesseract,它是一款用于光學(xué)字符識別(OCR)的python工具,即從圖片中識別出其中嵌入的文字。

整個過程分為截取登錄頁面->獲取驗證碼的位置坐標(biāo)->打開截圖->從截圖中截取驗證碼的區(qū)域->使用pytesseract工具識別驗證碼,這里直接使用pytesseract轉(zhuǎn)換介紹。

1.安裝Pillow

pip install Pillow

2.安裝pytesseract

pip install pytesseract

3.實現(xiàn)代碼

from PIL import Image 導(dǎo)入Image函數(shù)

import pytesseract 導(dǎo)入pytesseract

def get_file_content(filePath):

# 3.驗證碼處理-使用OCR自動識別

qq = Image.open("D://software//project//jpress//testcases//basic//test.png") # 打開jpg驗證碼圖片

text = pytesseract.image_to_string(qq).strip()

運行查看結(jié)果返回為空,所以說這種方法對于簡單的驗證碼還可以,復(fù)雜一點的可以直接放棄。

軟件測試工程師必備:Web自動化實踐全紀(jì)錄,10分鐘教你學(xué)自動化(自動化 軟件測試)

第三方API接口

打碼平臺鏈接地址:

http://www.ttshitu.com/docs/index.html?spm=null

首先需要注冊一個賬號,其次充值,1塊錢夠用挺長時間,找到對應(yīng)的語言(如python),拷貝代碼:

……

※※因原作者要求,文章僅顯示其中一部分,完整文章下載閱讀,可以直接:關(guān)注 私信“文章”即可。

最后給軟件測試員的一封信

IT工作是辛苦的,軟件測試當(dāng)然也不例外。每天執(zhí)行用例、跟蹤Bug,還要與開發(fā)、產(chǎn)品同學(xué)爭吵PK,與人斗其樂無窮~

但正是因為這些默默的付出,你讓一場本該在用戶面前發(fā)生的災(zāi)難,提前在自己面前發(fā)生了,你是否有一種救世主的感覺?

你拯救了用戶,也拯救了這一軟件,避免了她被撇棄、卸載的命運。既然選擇了測試這一行,何不一站到底~~

現(xiàn)在我邀請你進入我們的軟件測試學(xué)習(xí)交流群,關(guān)注 私信我“測試”,即可拉你入群喲~~

大家可以一起探討交流軟件測試,共同學(xué)習(xí)軟件測試技術(shù)、面試等軟件測試方方面面,還會有免費直播課,收獲更多測試技巧,我們一起進階Python自動化測試/測試開發(fā),走向高薪之路。

那我邀你進群吧!記得:關(guān)注 私信我“測試”,即可拉你入群喲~~

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部
长顺县| 闽侯县| 鄂托克旗| 从化市| 锡林浩特市| 嘉峪关市| 明溪县| 岱山县| 康平县| 文山县| 塔河县| 连南| 绍兴县| 天峻县| 穆棱市| 亚东县| 新巴尔虎右旗| 延川县| 故城县| 莲花县| 左贡县| 左权县| 霍山县| 布拖县| 裕民县| 望都县| 安塞县| 清水县| 皋兰县| 车致| 崇礼县| 桃园县| 昌黎县| 含山县| 河西区| 北票市| 白山市| 安乡县| 桐梓县| 临澧县| 莱阳市|