作者簡介:大家好,我是未央;
博客首頁:未央.303
系列專欄:Java測試開發(fā)
每日一句:人的一生,可以有所作為的時(shí)機(jī)只有一次,那就是現(xiàn)在?。?!
前言
一、自動(dòng)化測試的概念以及分類
二、Selenium—web自動(dòng)化測試工具
2.1?自動(dòng)化測試的一些前置工作
2.2 第一個(gè)自動(dòng)化實(shí)例
2.3?總結(jié)
三、 Selenium常用方法
3.1?定位元素的方法
3.2?元素的操作
3.3?等待
3.3.1 強(qiáng)制等待
3.3.2 隱式等待
總結(jié)
前言
一、自動(dòng)化測試的概念以及分類
自動(dòng)化測試指軟件測試的自動(dòng)化,在預(yù)設(shè)狀態(tài)下運(yùn)行應(yīng)用程序或者系統(tǒng).
預(yù)設(shè)條件包括正常和異常,最后評(píng)估運(yùn)行結(jié)果。
自動(dòng)化測試,就是將人為驅(qū)動(dòng)的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的過程。
?
自動(dòng)化測試包括:
界面(UI)自動(dòng)化測試——移動(dòng)端、web端;
接口自動(dòng)化測試;
單元自動(dòng)化測試;
二、Selenium—web自動(dòng)化測試工具
為什么我們選擇這個(gè)自動(dòng)化測試工具?
2.1?自動(dòng)化測試的一些前置工作
我們要想使用Selenium來完成web自動(dòng)化測試,首先要搭建起一個(gè)自動(dòng)化測試環(huán)境。
- Chrome瀏覽器
- Chrome的驅(qū)動(dòng)(ChromeDriver)——》驅(qū)動(dòng)版本要和你的Chrome瀏覽器版本對(duì)應(yīng)起來
- Selenium工具包
配置操作步驟:
?Chrome驅(qū)動(dòng)安裝詳見:java+selenium環(huán)境搭建
?Selenium工具包的導(dǎo)入:
在你要測試的Maven項(xiàng)目中導(dǎo)入該工具包
2.2 第一個(gè)自動(dòng)化實(shí)例
在安裝好瀏覽器對(duì)應(yīng)的驅(qū)動(dòng)后,新建一個(gè)Maven項(xiàng)目,導(dǎo)入Selenium工具包;
創(chuàng)建測試實(shí)例FirstAutoTest(新建一個(gè)類)
?展示實(shí)例:
2.3?總結(jié)
簡單自動(dòng)化示例主要包含五個(gè)步驟:
1、創(chuàng)建驅(qū)動(dòng)實(shí)例,創(chuàng)建會(huì)話
2、訪問網(wǎng)站
3、查找元素
4、操作元素
5、結(jié)束會(huì)話
三、 Selenium常用方法
3.1?定位元素的方法
1、CSS選擇器——cssSelector
2、xpath選擇器
3.2?元素的操作
當(dāng)我們定位到了具體元素,接下來我就應(yīng)該對(duì)元素進(jìn)行相關(guān)操作了(比如輸入文本內(nèi)容、點(diǎn)擊操作)?
常見的操作對(duì)象(元素)的方法有下面幾個(gè)
1、click點(diǎn)擊對(duì)象;
2、sendKeys 在對(duì)象 上模擬按鈕輸入;
3、clear清除對(duì)象輸入的文本內(nèi)容;
4、submit提交——》等價(jià)于click;
click 和 submit 都可以操作按鈕;
注意:
【前提:submit 操作的是按鈕】
可以使用 submit 的地方,都可以使用 click 來實(shí)現(xiàn)。
文本樣式的超鏈接的觸發(fā),只能通過 click(點(diǎn)擊)的方式來觸發(fā)。
如果使用 sumbit 的方式來觸發(fā),就會(huì)報(bào)錯(cuò)。
在 selenium 官方文檔中,更推薦使用 click
不推薦使用 submit。————————————————————————————————————————
getText用于獲取元素的文本信息
3.3?等待
3.3.1 強(qiáng)制等待
名詞解釋:強(qiáng)制線程休眠一定時(shí)間,適合腳本調(diào)試時(shí)使用。
常用方法:
Thread.sleep(long millis);
- 優(yōu)點(diǎn):適合腳本調(diào)試時(shí)使用;
- 缺點(diǎn):不能準(zhǔn)確把握需要等待的時(shí)間,如果用例中大量使用,會(huì)浪費(fèi)不必要的等待時(shí)間,影響用例的執(zhí)行效率;
影響效率:
- 操作未完成,等待結(jié)束,導(dǎo)致系統(tǒng)報(bào)錯(cuò);
- 操作完成,時(shí)間未到,導(dǎo)致浪費(fèi)時(shí)間;
代碼舉例:
?from selenium import webdriver from time import sleep from selenium.webdriver.common.by import By class TestWait: def setup(self): self.driver = webdriver.Chrome() self.driver.get("https://www.baidu.com") def teardown(self): self.driver.quit() def test_wait(self): sleep(3) print("hello baidu") self.driver.find_element(By.ID, "kw").click() sleep(3) self.driver.find_element(By.ID, "kw").send_keys("北京") sleep(3)
3.3.2 隱式等待
名詞解釋:設(shè)置一個(gè)最長等待時(shí)間,輪循查看頁面是否加載完成(默認(rèn) 0.5 秒),如果超過最長等待時(shí)間頁面未加載完成則拋出異常。
常用方法:driver.manage().timeouts().implicitlyWait(Duration duration);
- 好處: 只需設(shè)置一次,全局都生效。如果超時(shí)時(shí)間內(nèi)網(wǎng)頁完成了全部加載,則立即進(jìn)行下面的操作。比sleep()智能很多。
- 劣勢: 隱式等待需要等到網(wǎng)頁所有元素都加載完成才會(huì)執(zhí)行下面的操作,如果我需要操作的元素提前加載好了,但是其他無關(guān)緊要的元素還沒有加載完成,那么還是需要浪費(fèi)時(shí)間去等待其他元素加載完成。
代碼舉例:
?from selenium import webdriver from time import sleep from selenium.webdriver import Keys from selenium.webdriver.common.by import By class TestWait: def setup(self): self.driver = webdriver.Chrome() self.driver.get("https://www.baidu.com") self.driver.maximize_window() self.driver.implicitly_wait(3) def teardown(self): self.driver.quit() def test_wait(self): print("hello baidu") self.driver.find_element(By.ID, "kw").click() self.driver.find_element(By.ID, "kw").send_keys("北京") self.driver.find_element(By.ID, "kw").send_keys(Keys.ENTER)
注:隱式等待設(shè)置一個(gè)等待時(shí)間,輪詢查找(默認(rèn)0.5s)元素是否出現(xiàn),如果在等待時(shí)間內(nèi)沒有出現(xiàn),則拋出異常文章來源:http://www.zghlxwxcb.cn/news/detail-759797.html
總結(jié)
文章來源地址http://www.zghlxwxcb.cn/news/detail-759797.html
到了這里,關(guān)于【測試開發(fā)】第五節(jié).測試——自動(dòng)化測試(Selenium工具)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!