selenium自動化測試入門實戰(zhàn)
一、Selenium介紹
Selenium 是什么?一句話,自動化測試工具。它支持各種瀏覽器,包括 Chrome,Safari,F(xiàn)irefox 等主流界面式瀏覽器,如果你在這些瀏覽器里面安裝一個 Selenium 的插件,那么便可以方便地實現(xiàn)Web界面的測試。
Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾經是 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官網下載鏈接:
https://www.python.org/downloads/windows/
pycharm官網下載鏈接: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.知識點
Selenium定位web元素的方法
瀏覽器調試工具使用
2.步驟
1) 人工走一遍流程,對自動化的流程心中有數(shù)
2) 按步驟拆分,然后對每一個小步驟編寫自動化腳本
3) 將所有步驟合起來,多次運行,測試腳本
3.打開12306
#打開網址
driver.get('https://kyfw.12306.cn/otn')
#睡五秒自動選擇驗證碼
time.sleep(5)
4.登錄12306
1)在chrome界面,按F12快捷鍵,彈出chrome的調試工具
2)找出登錄按鈕的id和username、password的id
根據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)
根據鏈接的文本來定位元素
driver.find_element_by_link_text("車票預訂").click()
time.sleep(5)

選擇出發(fā)地

利用js代碼凍結瀏覽器界面。
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、因為是學生認證所以多一步需要確認(不是學生可去掉)
3、訂票成功
六、總結
自動化測試的優(yōu)點是能夠很快、很廣泛地查找缺陷,同時可以做很多重復性的工作,在回歸測試階段,我們可以利用自動化功能測試工具進行,而無須大量的軟件測試人員手動的再次執(zhí)行測試用例,極大的提高了工作效率。
自動化測試的缺點也很明顯,它們只能檢查一些比較主要的問題,如崩潰、死機,但是卻無法發(fā)現(xiàn)一些一般的日常錯誤,這些錯誤通過人眼很容易找到,但機器卻往往找不到。另外,在自動測試中編寫測試腳本工作量也很大,有時候該工作量甚至超過了手動測試的時間。
Selenium腳本的執(zhí)行速度受多方面因素的影響,如網速,操作步驟的繁瑣程度,頁面加載的速度,以及我們在腳本中設置的等待時間,運行腳本的線程數(shù)等。所以不能單方面追求運行速度的,要確保穩(wěn)定性,能穩(wěn)定地實現(xiàn)回歸測試才是關鍵。
Selenium保證元素成功率是通過元素的定位,當然它的定位方法很多,一定能有合適的。但是在自動化工程的實施過程中,高質量的自動化測試不是只有測試人員保證的。需要開發(fā)人員規(guī)范開發(fā)習慣,如給頁面元素加上唯一的name,id等,這樣就能大大地提高元素定位的準確性。
附代碼:
#-*-coding:utf8-*-
import time
from selenium import webdriver
#運行chrome,打開瀏覽器
driver =webdriver.Chrome()
#設置瀏覽器窗口
driver.set_window_size(1080,800)
#設置全局操作時間
driver.implicitly_wait(10)
#打開網址
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("車票預訂").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("預訂").click()
# 乘車人選擇
driver.find_element_by_css_selector("#normal_passenger_id > li:nth-child(1) > label").click()
# 學生票確認(不是學生可去掉)
driver.find_element_by_link_text("確認").click()
# 提交訂單
driver.find_element_by_link_text("提交訂單").click()
driver.find_element_by_link_text("確認").click()
except:
pass
到此這篇關于selenium自動化測試入門實戰(zhàn)的文章就介紹到這了,更多相關selenium自動化測試內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決pytorch報錯:AssertionError: Invalid device id的問題
今天小編就為大家分享一篇解決pytorch報錯:AssertionError: Invalid device id的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
python中numpy.empty()函數(shù)實例講解
在本篇文章里小編給大家分享的是一篇關于python中numpy.empty()函數(shù)實例講解內容,對此有興趣的朋友們可以學習下。2021-02-02

