python如何做自動(dòng)化測(cè)試帅矗??煞烫?戳這里 ->>> selenium中webdriver類詳解了解自動(dòng)化測(cè)試


點(diǎn)擊這里學(xué)習(xí)更多自動(dòng)化測(cè)試知識(shí) ->>>查看詳情


什么是selenium

簡(jiǎn)單來(lái)說(shuō)selenium是一個(gè)基于web端的UI自動(dòng)化測(cè)試組件浑此,模擬用戶操作去控制瀏覽器自動(dòng)運(yùn)行,支持多語(yǔ)言目前主流就是python滞详,Java凛俱,支持多瀏覽器chrome、ie料饥、firefox等蒲犬。

Selenium工作原理

1.運(yùn)行自動(dòng)化測(cè)試腳本,向web service發(fā)送一個(gè)http請(qǐng)求

2.瀏覽器驅(qū)動(dòng)中的web service 會(huì)根據(jù)這個(gè)請(qǐng)求生成對(duì)應(yīng)的js腳本岸啡,因?yàn)椴煌臑g覽器原叮,不同的瀏覽器要有不同的驅(qū)動(dòng)

3.js腳本驅(qū)動(dòng)瀏覽器,產(chǎn)生各種操作巡蘸,并返回給web service

4.web service將結(jié)果通過(guò)http響應(yīng)的形式返回給客戶端

自動(dòng)化測(cè)試環(huán)境搭建

Python+selenium+chrome百度一下配置安裝奋隶,過(guò)程比較簡(jiǎn)單,注意chrome瀏覽器版本和對(duì)應(yīng)chromedriver.exe驅(qū)動(dòng)版本赡若,版本對(duì)應(yīng)情況可百度

打開(kāi)瀏覽器

導(dǎo)入selenium下的webdriver類达布,調(diào)用打開(kāi)瀏覽器方法,不同的瀏覽器需要不同的驅(qū)動(dòng)否則會(huì)報(bào)錯(cuò)打不開(kāi)


使用無(wú)界面模式打開(kāi)瀏覽器逾冬,add_argument方法中加入--headless參數(shù)黍聂,添加到Chrome方法的options參數(shù)中

打開(kāi)瀏覽器為手機(jī)模式

瀏覽器窗口最大化、設(shè)置窗口尺寸

maximize_window()方法當(dāng)前打開(kāi)窗口最大化

set_window_size(width,height)設(shè)置瀏覽器窗口尺寸

打開(kāi)網(wǎng)頁(yè)

1身腻、調(diào)用webdriver下的get方法傳入網(wǎng)頁(yè)鏈接參數(shù)

同一個(gè)瀏覽器中打開(kāi)兩個(gè)網(wǎng)頁(yè)需運(yùn)行js腳本打開(kāi)網(wǎng)頁(yè)产还,調(diào)用webdriver中execute_script(),傳入js腳本即可嘀趟,默認(rèn)在當(dāng)前第一個(gè)網(wǎng)址頁(yè)面脐区,需切換瀏覽器窗口

切換瀏覽器窗口

Window_handles: 獲取當(dāng)前打開(kāi)瀏覽器中所有窗口句柄,返回一個(gè)列表

Current_window_handle: 獲取當(dāng)前窗口句柄

Switch_to.window(): 切換到那個(gè)窗口句柄她按,傳入窗口句柄字段

查找頁(yè)面元素

1牛隅、webdriver類中包含多種方法去查找頁(yè)面元素,id酌泰、xpath媒佣、name、text陵刹、css默伍、class等,注意定位頁(yè)面元素是路徑必須是頁(yè)面唯一的一個(gè)否則定位不到頁(yè)面元素

頁(yè)面:

使用所有方法定位百度輸入框:一般常用的id、xpath也糊、css定位比較準(zhǔn)確炼蹦,xpath、css可以手動(dòng)書(shū)寫(xiě)路徑表達(dá)式狸剃,其他的name掐隐、class、text钞馁、tag_name只能在頁(yè)面是唯一的時(shí)候使用

關(guān)于find_element 和 find_elements的區(qū)別:前者是查找一個(gè)元素瑟枫,后者是查找一組元素,返回一個(gè)列表

輸入指攒、清除、點(diǎn)擊

找到頁(yè)面輸入框元素路徑僻焚,send_keys()方法傳字符串允悦,輸入字段

clear()方法清除輸入框字段

找到頁(yè)面按鈕元素路徑,掉用click()方法點(diǎn)擊

接受虑啤、取消頁(yè)面警告彈窗

switch_to.alert.accept()切換到彈窗使用accept()方法確認(rèn)隙弛、dismiss()方法取消警告

獲取頁(yè)面文本、網(wǎng)頁(yè)title狞山、元素屬性全闷、頁(yè)面url

查找頁(yè)面文本對(duì)應(yīng)路徑,使用text方法獲取

title方法直接獲取頁(yè)面title字段

獲取元素屬性萍启,get_attribute()方法傳入屬性對(duì)應(yīng)key

直接使用current_url方法獲取當(dāng)前頁(yè)面url返回字符串

切換frame

有時(shí)候頁(yè)面元素在frame框下总珠,需要先切換到iframe中才能執(zhí)行操作,否則直接定位頁(yè)面元素勘纯,會(huì)報(bào)錯(cuò)找不到元素位置

Webdriver中switch_to.frame()方法切換

切換出frame: switch_to.default_content()

截圖功能

get_screenshot_as_file(filename)傳入圖片保存位置

操作select下拉框選項(xiàng)

1局服、操作Select下拉選擇框webdriver中有專用的方法去選中,需導(dǎo)入Select方法

from selenium.webdriver.support.select import Select

定位到select選擇框位置驳遵,Select()傳入元素獲取的元素路徑位置調(diào)用下面的選擇方法去選中所要的值

select_by_index()?:通過(guò)索引定位淫奔,以0開(kāi)始

select_by_value()?:通過(guò)value值定位

select_by_visible_text() :通過(guò)文本值定位

deselect_all():取消所有選項(xiàng)

deselect_by_index()?:取消對(duì)應(yīng)index選項(xiàng)

deselect_by_value():取消對(duì)應(yīng)value選項(xiàng)

deselect_by_visible_text():取消對(duì)應(yīng)文本選項(xiàng)

first_selected_option():返回第一個(gè)選項(xiàng)

all_selected_options():返回所有的選項(xiàng)

如何操作非Select下拉框呢?思路:先點(diǎn)擊展開(kāi)下拉列表堤结,再獲取父元素路徑位置獲取獲取元素下所有標(biāo)簽唆迁,循環(huán)遍歷列表獲取文本進(jìn)行對(duì)比,判斷是否是要選擇項(xiàng)

頁(yè)面例子:

代碼例子選中“最近一周”:

顯示等待竞穷、隱式等待唐责、強(qiáng)制等待

time.sleep():傳入數(shù)值,強(qiáng)制等待幾秒執(zhí)行来庭,導(dǎo)入time文件

implicitly_wait(10):隱式等待妒蔚,是設(shè)置的全局等待,設(shè)置等待時(shí)間,是對(duì)頁(yè)面中的所有元素設(shè)置加載時(shí)間肴盏,如果超出了設(shè)置時(shí)間的則拋出異常

WebDriverWait():顯示等待科盛,是針對(duì)于某個(gè)特定的元素設(shè)置的等待時(shí)間,在設(shè)置時(shí)間內(nèi)菜皂,默認(rèn)每隔一段時(shí)間檢測(cè)一次當(dāng)前頁(yè)面某個(gè)元素是否存在贞绵,如果在規(guī)定的時(shí)間內(nèi)找到了元素,則直接執(zhí)行恍飘,即找到元素就執(zhí)行相關(guān)操作榨崩,如果超過(guò)設(shè)置時(shí)間檢測(cè)不到則拋出異常,默認(rèn)拋出異常為:NoSuchElementException

10s是等待時(shí)間章母,1s是步長(zhǎng)每隔幾秒檢測(cè)一次母蛛,默認(rèn)0.5s

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市乳怎,隨后出現(xiàn)的幾起案子彩郊,更是在濱河造成了極大的恐慌,老刑警劉巖蚪缀,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秫逝,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡询枚,警方通過(guò)查閱死者的電腦和手機(jī)违帆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)金蜀,“玉大人刷后,你說(shuō)我怎么就攤上這事×停” “怎么了惠险?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)抒线。 經(jīng)常有香客問(wèn)我班巩,道長(zhǎng),這世上最難降的妖魔是什么嘶炭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任抱慌,我火速辦了婚禮,結(jié)果婚禮上眨猎,老公的妹妹穿的比我還像新娘抑进。我一直安慰自己,他們只是感情好睡陪,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布寺渗。 她就那樣靜靜地躺著匿情,像睡著了一般。 火紅的嫁衣襯著肌膚如雪信殊。 梳的紋絲不亂的頭發(fā)上炬称,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音涡拘,去河邊找鬼玲躯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鳄乏,可吹牛的內(nèi)容都是我干的跷车。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼橱野,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼朽缴!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起水援,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤不铆,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后裹唆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡只洒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年许帐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毕谴。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡成畦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涝开,到底是詐尸還是另有隱情循帐,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布舀武,位于F島的核電站拄养,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏银舱。R本人自食惡果不足惜瘪匿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望寻馏。 院中可真熱鬧棋弥,春花似錦、人聲如沸诚欠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至粉寞,卻和暖如春尼荆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仁锯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工耀找, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人业崖。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓野芒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親双炕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狞悲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容