selenium自動(dòng)化測(cè)試入門(mén)實(shí)戰(zhàn)
一、Selenium介紹
Selenium 是什么?一句話(huà),自動(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è)小步驟編寫(xiě)自動(dòng)化腳本
3) 將所有步驟合起來(lái),多次運(yùn)行,測(cè)試腳本
3.打開(kāi)12306
#打開(kāi)網(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("車(chē)票預(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ā)日


選擇車(chē)次類(lèi)型:
五、實(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è)試中編寫(xiě)測(cè)試腳本工作量也很大,有時(shí)候該工作量甚至超過(guò)了手動(dòng)測(cè)試的時(shí)間。
Selenium腳本的執(zhí)行速度受多方面因素的影響,如網(wǎng)速,操作步驟的繁瑣程度,頁(yè)面加載的速度,以及我們?cè)谀_本中設(shè)置的等待時(shí)間,運(yùn)行腳本的線(xià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è)試人員保證的。需要開(kāi)發(fā)人員規(guī)范開(kāi)發(fā)習(xí)慣,如給頁(yè)面元素加上唯一的name,id等,這樣就能大大地提高元素定位的準(zhǔn)確性。
附代碼:
#-*-coding:utf8-*-
import time
from selenium import webdriver
#運(yùn)行chrome,打開(kāi)瀏覽器
driver =webdriver.Chrome()
#設(shè)置瀏覽器窗口
driver.set_window_size(1080,800)
#設(shè)置全局操作時(shí)間
driver.implicitly_wait(10)
#打開(kāi)網(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("車(chē)票預(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)
#車(chē)型選擇
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()
# 乘車(chē)人選擇
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è)試入門(mén)實(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)文章
基于Python實(shí)現(xiàn)迪杰斯特拉和弗洛伊德算法
這篇文章主要為大家詳細(xì)介紹了基于Python實(shí)現(xiàn)迪杰斯特拉和弗洛伊德算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
全網(wǎng)最細(xì) Python 格式化輸出用法講解(推薦)
這篇文章主要介紹了全網(wǎng)最細(xì) Python 格式化輸出用法講解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
python自動(dòng)化工具日志查詢(xún)分析腳本代碼實(shí)現(xiàn)
這篇文章主要介紹了python日志查詢(xún)分析腳本代碼的實(shí)現(xiàn),分為受控節(jié)點(diǎn)和主控節(jié)點(diǎn),大家參考使用吧2013-11-11
解決pytorch報(bào)錯(cuò):AssertionError: Invalid device id的問(wèn)題
今天小編就為大家分享一篇解決pytorch報(bào)錯(cuò):AssertionError: Invalid device id的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
python中numpy.empty()函數(shù)實(shí)例講解
在本篇文章里小編給大家分享的是一篇關(guān)于python中numpy.empty()函數(shù)實(shí)例講解內(nèi)容,對(duì)此有興趣的朋友們可以學(xué)習(xí)下。2021-02-02

