selenium学习笔记(一)
備注:摘自《selenium2 python? 自動化測試實(shí)戰(zhàn)》- 蟲師
(一)什么樣的項(xiàng)目適合自動化測試
1.軟件需求變動不頻繁
測試腳本的穩(wěn)定性決定了自動化測試的維護(hù)成本。如果軟件需求變動過于頻繁,測試人員需要根
據(jù)變動的需求來更新測試用例以及相關(guān)的測試腳本,而腳本的維護(hù)本身就是一個(gè)代碼開發(fā)的過程,需
要修改、調(diào)試,必要的時(shí)候還要修改自動化測試的框架,如果所花費(fèi)的成本不低于利用其節(jié)省的測試
成本,那么自動化測試便是失敗的。
項(xiàng)目中的某些模塊相對穩(wěn)定,而某些模塊需求變動性很大。我們便可對相對穩(wěn)定的模塊進(jìn)行自動
化測試,而變動較大的仍是用手工測試。
2.項(xiàng)目周期較長
由于自動化測試需求的確定、自動化測試框架的設(shè)計(jì)、測試腳本的編寫與調(diào)試均需要相當(dāng)長的時(shí)
間來完成。這樣的過程本身就是一個(gè)測試軟件的開發(fā)過程,需要較長的時(shí)間來完成。如果項(xiàng)目的周期
比較短,沒有足夠的時(shí)間去支持這樣一個(gè)過程,那么自動化測試便成為笑談。
3.自動化測試腳本可重復(fù)使用
自動化測試腳本的重復(fù)使用要從三個(gè)方面來考量,一方面所測試的項(xiàng)目之間是否很大的差異性(如
C/S 系統(tǒng)和 B/S 系統(tǒng)的差異);所選擇的測試工具是否適應(yīng)這種差異;最后,測試人員是否有能力開發(fā)出適應(yīng)這種差異的自動化測試框架。
(二)selenium
selenium 自動化測試瀏覽器,它主要是用于 Web 應(yīng)用程序的自動化測試,但肯定不只局限于此,同
時(shí)支持所有基于 web 的管理任務(wù)自動化。
XML
XML 是指擴(kuò)展標(biāo)記語言,是標(biāo)準(zhǔn)通用標(biāo)記語言的一個(gè)子集;與 HTML 類似,但它并非 HTML 的替代品,它們?yōu)椴煌哪康亩O(shè)計(jì);HTML 被設(shè)計(jì)用來顯示數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的外觀。XML 被設(shè)計(jì)為傳輸和存儲數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的內(nèi)容。
webdriver操作
driver.maximize_window()?? ? #將瀏覽器最大化顯示
driver.set_window_size(480, 800)?? ??? ?#設(shè)置瀏覽器寬480、高800顯示
XPath定位
優(yōu)缺點(diǎn):有點(diǎn)是定位的元素很難找到合適的方式時(shí),可以通這種絕對路徑的方式定位,缺點(diǎn)是當(dāng)元素在很多級目錄下時(shí),要寫很長的路徑,這種方式難以閱讀和維護(hù)。
1、性能差,定位元素的性能比其它大多數(shù)方式差;
2、不夠健壯,XPath會隨著頁面元素布局的改變而改變;
3、兼容性不好,在不同的瀏覽器下對 XPath 的實(shí)現(xiàn)是不一樣的。
鼠標(biāo)事件
ActionChains 類鼠標(biāo)操作的常用方法:
context_click() 右擊
double_click() 雙擊
drag_and_drop() 拖動
move_to_element() 鼠標(biāo)懸停在一個(gè)元素上
click_and_hold() 按下鼠標(biāo)左鍵在一個(gè)元素上
參考代碼
#引入 ActionChains 類
from selenium.webdriver.common.action_chains import ActionChains
...
#定位到要右擊的元素
right =driver.find_element_by_xpath("xx")
#對定位到的元素執(zhí)行鼠標(biāo)右鍵操作
ActionChains(driver).context_click(right).perform()
....
具體解釋:
from selenium.webdriver.common.action_chains import ActionChains
在使用 ActionChains 類下面的方法之前,將包引入。
ActionChains(driver)
driver: wedriver 實(shí)例執(zhí)行用戶操作。
ActionChains 用于生成用戶的行為;所有的行為都存儲在 actionchains 對象。通過 perform()執(zhí)行存儲的行為。
perform()
執(zhí)行所有 ActionChains 中存儲的行為。perfrome()同樣也是 ActionChains 類提供的的方法,通常與ActionChains()配合使用。
設(shè)置等待時(shí)間
sleep():設(shè)置固定休眠時(shí)間。python 的 time 包提供了休眠方法 sleep() ,導(dǎo)入 time包后就可以使用sleep()進(jìn)行腳本的執(zhí)行過程進(jìn)行休眠。
implicitly_wait():是 webdirver 提供的一個(gè)超時(shí)等待。隱式等待一個(gè)元素被發(fā)現(xiàn),或一個(gè)命令完成。
如果超出了設(shè)置時(shí)間的則拋出異常。
WebDriverWait():同樣也是 webdirver 提供的方法。在設(shè)置時(shí)間內(nèi),默認(rèn)每隔一段時(shí)間檢測一次當(dāng)前頁面元素是否存在,如果超過設(shè)置時(shí)間檢測不到則拋出異常。
import os
os.path.abspath()
os 模塊為 python 語言標(biāo)準(zhǔn)庫中的, os 模塊包含普遍的操作系統(tǒng)功能。主要用于操作本地目錄文件。path.abspath()方法用于獲取當(dāng)前路徑下的文件。
瀏覽器多窗口處理
要想在多個(gè)窗口之間切換,首先要獲得每一個(gè)窗口的唯一標(biāo)識符號(句柄)。通過獲得的句柄來區(qū)別
分不同的窗口,從而對不同窗口上的元素進(jìn)行操作。
處理過程:
這個(gè)處理過程相比我們前面的元素操作來說稍微復(fù)雜一些,執(zhí)行過程為:首選通過 nowhandle 獲得當(dāng)前窗口(百度首頁)的句柄;然后,打開注冊窗口(注冊頁);通過 allhandles 獲得所有窗口的句柄;對所有句柄進(jìn)行循環(huán)遍歷;判斷窗口是否為 nowhandle(百度首頁),如果不是則獲得當(dāng)前窗口(注冊頁)的句柄;然后,對注冊頁上的元素進(jìn)行操作。最后,回返到首頁。
current_window_handle
獲得當(dāng)前窗口句柄
window_handles
返回的所有窗口的句柄到當(dāng)前會話
switch_to_window()
用于處理多窗口操作的方法
close()
用于關(guān)閉當(dāng)前窗口
轉(zhuǎn)載于:https://www.cnblogs.com/lzyp2008/p/6999975.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的selenium学习笔记(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: u盘在电脑上卡怎么办 电脑插入U盘卡住怎
- 下一篇: sdkjdkjre