selenium自動化測試入門實戰(zhàn)
一、Selenium介紹
Selenium 是什么?一句話,自動化測試工具。它支持各種瀏覽器,包括 Chrome,Safari,F(xiàn)irefox 等主流界面式瀏覽器,如果你在這些瀏覽器里面安裝一個 Selenium 的插件,那么便可以方便地實現(xiàn)Web界面的測試。
Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾經(jīng)是 Selenium 的競爭對手)。也就是說 Selenium 2 是 Selenium 和 WebDriver 兩個項目的合并,即 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版本號:
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\ ,同時把chrome的安裝目錄加入到path環(huán)境變量。
四、自動測試實戰(zhàn):12306訂票
1.知識點(diǎn)
Selenium定位web元素的方法
瀏覽器調(diào)試工具使用
2.步驟
1) 人工走一遍流程,對自動化的流程心中有數(shù)
2) 按步驟拆分,然后對每一個小步驟編寫自動化腳本
3) 將所有步驟合起來,多次運(yùn)行,測試腳本
3.打開12306
#打開網(wǎng)址 driver.get('https://kyfw.12306.cn/otn') #睡五秒自動選擇驗證碼 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ù)鏈接的文本來定位元素
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ā)日
選擇車次類型:
五、實驗分析:
1、不會破解12306的變態(tài)驗證碼。沒有自動破解驗證碼,所以留五秒鐘自己手動選驗證碼。
2、因為是學(xué)生認(rèn)證所以多一步需要確認(rèn)(不是學(xué)生可去掉)
3、訂票成功
六、總結(jié)
自動化測試的優(yōu)點(diǎn)是能夠很快、很廣泛地查找缺陷,同時可以做很多重復(fù)性的工作,在回歸測試階段,我們可以利用自動化功能測試工具進(jìn)行,而無須大量的軟件測試人員手動的再次執(zhí)行測試用例,極大的提高了工作效率。
自動化測試的缺點(diǎn)也很明顯,它們只能檢查一些比較主要的問題,如崩潰、死機(jī),但是卻無法發(fā)現(xiàn)一些一般的日常錯誤,這些錯誤通過人眼很容易找到,但機(jī)器卻往往找不到。另外,在自動測試中編寫測試腳本工作量也很大,有時候該工作量甚至超過了手動測試的時間。
Selenium腳本的執(zhí)行速度受多方面因素的影響,如網(wǎng)速,操作步驟的繁瑣程度,頁面加載的速度,以及我們在腳本中設(shè)置的等待時間,運(yùn)行腳本的線程數(shù)等。所以不能單方面追求運(yùn)行速度的,要確保穩(wěn)定性,能穩(wěn)定地實現(xiàn)回歸測試才是關(guān)鍵。
Selenium保證元素成功率是通過元素的定位,當(dāng)然它的定位方法很多,一定能有合適的。但是在自動化工程的實施過程中,高質(zhì)量的自動化測試不是只有測試人員保證的。需要開發(fā)人員規(guī)范開發(fā)習(xí)慣,如給頁面元素加上唯一的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è)置全局操作時間 driver.implicitly_wait(10) #打開網(wǎng)址 driver.get('https://kyfw.12306.cn/otn') time.sleep(5) driver.find_element_by_link_text("賬號登錄").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") #睡十五秒自動選擇驗證碼 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'無','--']: print ("nono") time.sleep(1) else: print("yes") # 購票 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自動化測試入門實戰(zhàn)的文章就介紹到這了,更多相關(guān)selenium自動化測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3實現(xiàn)帶多張圖片、附件的郵件發(fā)送
這篇文章主要為大家詳細(xì)介紹了python3實現(xiàn)帶多張圖片、附件的郵件發(fā)送,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08python條件判斷中not、is、is?not、is?not?None、is?None代碼實例
None是python中的一個特殊的常量,表示一個空的對象,下面這篇文章主要給大家介紹了關(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ì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02python 數(shù)字轉(zhuǎn)換為日期的三種實現(xiàn)方法
在Python中,我們經(jīng)常需要處理日期和時間,本文主要介紹了python 數(shù)字轉(zhuǎn)換為日期的三種實現(xiàn)方法,包含datetime模塊,strftime方法及pandas庫,具有一定的參考價值,感興趣的可以了解一下2024-02-02Python打包工具PyInstaller的安裝與pycharm配置支持PyInstaller詳細(xì)方法
這篇文章主要介紹了Python打包工具PyInstaller的安裝與pycharm配置支持PyInstaller詳細(xì)方法,需要的朋友可以參考下2020-02-02