selenium自動(dòng)化測(cè)試入門實(shí)戰(zhàn)
一、Selenium介紹
Selenium 是什么?一句話,自動(dòng)化測(cè)試工具。它支持各種瀏覽器,包括 Chrome,Safari,F(xiàn)irefox 等主流界面式瀏覽器,如果你在這些瀏覽器里面安裝一個(gè) Selenium 的插件,那么便可以方便地實(shí)現(xiàn)Web界面的測(cè)試。
Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾經(jīng)是 Selenium 的競(jìng)爭(zhēng)對(duì)手)。也就是說(shuō) Selenium 2 是 Selenium 和 WebDriver 兩個(gè)項(xiàng)目的合并,即 Selenium 2 兼容 Selenium,它既支持 Selenium API 也支持 WebDriver API。
中文文檔:http://selenium-python-zh.readthedocs.io/en/latest/index.html
英文文檔:http://selenium-python.readthedocs.io/index.html
二、python、pycharm安裝
Python官網(wǎng)下載鏈接:
https://www.python.org/downloads/windows/
pycharm官網(wǎng)下載鏈接:https://www.jetbrains.com/pycharm/download/#section=windows
三、selenium安裝
1)pip install selenium
安裝Chrome driver
https://chromedriver.storage.googleapis.com/index.html?path=2.29/
Chrome瀏覽器和Chromedriver版本號(hào):
chromedriver版本 | 支持的Chrome版本 |
---|---|
v2.43 | v69-71 |
v2.42 | v68-70 |
v2.41 | v67-69 |
v2.40 | v66-68 |
v2.39 | v66-68 |
v2.38 | v65-67 |
v2.37 | v64-66 |
v2.36 | v63-65 |
v2.35 | v62-64 |
v2.34 | v61-63 |
v2.33 | v60-62 |
v2.32 | v59-61 |
v2.31 | v58-60 |
v2.30 | v58-60 |
v2.29 | v56-58 |
v2.28 | v55-57 |
v2.27 | v54-56 |
v2.26 | v53-55 |
v2.25 | v53-55 |
v2.24 | v52-54 |
v2.23 | v51-53 |
v2.22 | v49-52 |
v2.21 | v46-50 |
v2.20 | v43-48 |
v2.19 | v43-47 |
v2.18 | v43-46 |
v2.17 | v42-43 |
v2.13 | v42-45 |
v2.15 | v40-43 |
v2.14 | v39-42 |
v2.13 | v38-41 |
v2.12 | v36-40 |
v2.11 | v36-40 |
v2.10 | v33-36 |
v2.9 | v31-34 |
v2.8 | v30-33 |
v2.7 | v30-33 |
v2.6 | v29-32 |
v2.5 | v29-32 |
v2.4 | v29-32 |
2)把chromedriver.exe拷貝到到chrome的安裝目錄下…\Google\Chrome\Application\ ,同時(shí)把chrome的安裝目錄加入到path環(huán)境變量。
四、自動(dòng)測(cè)試實(shí)戰(zhàn):12306訂票
1.知識(shí)點(diǎn)
Selenium定位web元素的方法
瀏覽器調(diào)試工具使用
2.步驟
1) 人工走一遍流程,對(duì)自動(dòng)化的流程心中有數(shù)
2) 按步驟拆分,然后對(duì)每一個(gè)小步驟編寫自動(dòng)化腳本
3) 將所有步驟合起來(lái),多次運(yùn)行,測(cè)試腳本
3.打開12306
#打開網(wǎng)址 driver.get('https://kyfw.12306.cn/otn') #睡五秒自動(dòng)選擇驗(yàn)證碼 time.sleep(5)
4.登錄12306
1)在chrome界面,按F12快捷鍵,彈出chrome的調(diào)試工具
2)找出登錄按鈕的id和username、password的id
根據(jù)id定位元素
driver.find_element_by_id("username").click() driver.find_element_by_id("username").send_keys("522268397@qq.com") driver.find_element_by_id("password").send_keys("***") print("continue") time.sleep(15)
根據(jù)鏈接的文本來(lái)定位元素
driver.find_element_by_link_text("車票預(yù)訂").click() time.sleep(5)
選擇出發(fā)地
利用js代碼凍結(jié)瀏覽器界面。
setTimeout(function(){debugger;}, 5000)
#出發(fā)地選擇 driver.find_element_by_id("fromStationText").click() # setTimeout(function(){debugger;}, 5000) driver.find_element_by_css_selector(u"[title=廣州]").click() time.sleep(5)
右擊代碼位置,選擇copy selector
選擇出發(fā)日
選擇車次類型:
五、實(shí)驗(yàn)分析:
1、不會(huì)破解12306的變態(tài)驗(yàn)證碼。沒(méi)有自動(dòng)破解驗(yàn)證碼,所以留五秒鐘自己手動(dòng)選驗(yàn)證碼。
2、因?yàn)槭菍W(xué)生認(rèn)證所以多一步需要確認(rèn)(不是學(xué)生可去掉)
3、訂票成功
六、總結(jié)
自動(dòng)化測(cè)試的優(yōu)點(diǎn)是能夠很快、很廣泛地查找缺陷,同時(shí)可以做很多重復(fù)性的工作,在回歸測(cè)試階段,我們可以利用自動(dòng)化功能測(cè)試工具進(jìn)行,而無(wú)須大量的軟件測(cè)試人員手動(dòng)的再次執(zhí)行測(cè)試用例,極大的提高了工作效率。
自動(dòng)化測(cè)試的缺點(diǎn)也很明顯,它們只能檢查一些比較主要的問(wèn)題,如崩潰、死機(jī),但是卻無(wú)法發(fā)現(xiàn)一些一般的日常錯(cuò)誤,這些錯(cuò)誤通過(guò)人眼很容易找到,但機(jī)器卻往往找不到。另外,在自動(dòng)測(cè)試中編寫測(cè)試腳本工作量也很大,有時(shí)候該工作量甚至超過(guò)了手動(dòng)測(cè)試的時(shí)間。
Selenium腳本的執(zhí)行速度受多方面因素的影響,如網(wǎng)速,操作步驟的繁瑣程度,頁(yè)面加載的速度,以及我們?cè)谀_本中設(shè)置的等待時(shí)間,運(yùn)行腳本的線程數(shù)等。所以不能單方面追求運(yùn)行速度的,要確保穩(wěn)定性,能穩(wěn)定地實(shí)現(xiàn)回歸測(cè)試才是關(guān)鍵。
Selenium保證元素成功率是通過(guò)元素的定位,當(dāng)然它的定位方法很多,一定能有合適的。但是在自動(dòng)化工程的實(shí)施過(guò)程中,高質(zhì)量的自動(dòng)化測(cè)試不是只有測(cè)試人員保證的。需要開發(fā)人員規(guī)范開發(fā)習(xí)慣,如給頁(yè)面元素加上唯一的name,id等,這樣就能大大地提高元素定位的準(zhǔn)確性。
附代碼:
#-*-coding:utf8-*- import time from selenium import webdriver #運(yùn)行chrome,打開瀏覽器 driver =webdriver.Chrome() #設(shè)置瀏覽器窗口 driver.set_window_size(1080,800) #設(shè)置全局操作時(shí)間 driver.implicitly_wait(10) #打開網(wǎng)址 driver.get('https://kyfw.12306.cn/otn') time.sleep(5) driver.find_element_by_link_text("賬號(hào)登錄").click() driver.find_element_by_id("J-userName").click() driver.find_element_by_id("J-userName").send_keys("522268397@qq.com") driver.find_element_by_id("J-password").send_keys("***") print("continue") #睡十五秒自動(dòng)選擇驗(yàn)證碼 time.sleep(15) driver.find_element_by_link_text("車票預(yù)訂").click() time.sleep(5) #出發(fā)地選擇 driver.find_element_by_id("fromStationText").click() # setTimeout(function(){debugger;}, 5000) driver.find_element_by_css_selector(u"[title=廣州]").click() time.sleep(5) #目的地選擇 driver.find_element_by_id("toStationText").click() driver.find_element_by_css_selector(u"[title=北京]").click() time.sleep(5) #出發(fā)日期選擇 driver.find_element_by_id("train_date").click() driver.find_element_by_css_selector("body > div.cal-wrap > div:nth-child(1) > div.cal-cm > div:nth-child(24) > div").click() time.sleep(5) #車型選擇 driver.find_element_by_css_selector("#_ul_station_train_code > li:nth-child(1) > label").click() time.sleep(5) while True: try: driver.find_element_by_id("query_ticket").click() e=driver.find_element_by_id("SWZ_6i00000G720F") e.click() if e.text in [u'無(wú)','--']: print ("nono") time.sleep(1) else: print("yes") # 購(gòu)票 driver.find_element_by_link_text("預(yù)訂").click() # 乘車人選擇 driver.find_element_by_css_selector("#normal_passenger_id > li:nth-child(1) > label").click() # 學(xué)生票確認(rèn)(不是學(xué)生可去掉) driver.find_element_by_link_text("確認(rèn)").click() # 提交訂單 driver.find_element_by_link_text("提交訂單").click() driver.find_element_by_link_text("確認(rèn)").click() except: pass
到此這篇關(guān)于selenium自動(dòng)化測(cè)試入門實(shí)戰(zhàn)的文章就介紹到這了,更多相關(guān)selenium自動(dòng)化測(cè)試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python3+selenium自動(dòng)化測(cè)試框架詳解
- selenium python 實(shí)現(xiàn)基本自動(dòng)化測(cè)試的示例代碼
- 關(guān)于Selenium的UI自動(dòng)化測(cè)試屏幕截圖功能實(shí)例代碼
- python selenium自動(dòng)化測(cè)試框架搭建的方法步驟
- selenium+python自動(dòng)化測(cè)試之環(huán)境搭建
- Selenium自動(dòng)化測(cè)試工具使用方法匯總
- 使用Python+selenium實(shí)現(xiàn)第一個(gè)自動(dòng)化測(cè)試腳本
- python+django+selenium搭建簡(jiǎn)易自動(dòng)化測(cè)試
相關(guān)文章
python3實(shí)現(xiàn)帶多張圖片、附件的郵件發(fā)送
這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)帶多張圖片、附件的郵件發(fā)送,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08python條件判斷中not、is、is?not、is?not?None、is?None代碼實(shí)例
None是python中的一個(gè)特殊的常量,表示一個(gè)空的對(duì)象,下面這篇文章主要給大家介紹了關(guān)于python條件判斷中not、is、is?not、is?not?None、is?None的相關(guān)資料,需要的朋友可以參考下2024-03-03Python argparse中的action=store_true用法小結(jié)
這篇文章主要介紹了Python argparse中的action=store_true用法小結(jié),本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02python 數(shù)字轉(zhuǎn)換為日期的三種實(shí)現(xiàn)方法
在Python中,我們經(jīng)常需要處理日期和時(shí)間,本文主要介紹了python 數(shù)字轉(zhuǎn)換為日期的三種實(shí)現(xiàn)方法,包含datetime模塊,strftime方法及pandas庫(kù),具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02Python打包工具PyInstaller的安裝與pycharm配置支持PyInstaller詳細(xì)方法
這篇文章主要介紹了Python打包工具PyInstaller的安裝與pycharm配置支持PyInstaller詳細(xì)方法,需要的朋友可以參考下2020-02-02