目錄
一. 背景
Selenium 是一個用于Web應用程序測試的工具娶吞。Selenium測試直接運行在瀏覽器中殖熟,就像真正的用戶在操作一樣挥萌。支持的瀏覽器包括IE(7, 8, 9, 10, 11)柬赐,Mozilla Firefox亡问,Safari,Google Chrome肛宋,Opera等州藕。這個工具的主要功能包括:測試與瀏覽器的兼容性——測試你的應用程序看是否能夠很好得工作在不同瀏覽器和操作系統(tǒng)之上。測試系統(tǒng)功能——創(chuàng)建回歸測試檢驗軟件功能和用戶需求酝陈。支持自動錄制動作和自動生成 .Net床玻、Java、Perl等不同語言的測試腳本沉帮。
優(yōu)點:
框架底層使用JavaScript模擬真實用戶對瀏覽器進行操作锈死。測試腳本執(zhí)行時,瀏覽器自動按照腳本代碼做出點擊穆壕,輸入待牵,打開,驗證等操作喇勋,就像真實用戶所做的一樣缨该,從終端用戶的角度測試應用程序。
使瀏覽器兼容性測試自動化成為可能茄蚯,盡管在不同的瀏覽器上依然有細微的差別压彭。
使用簡單睦优,可使用Java,Python等多種語言編寫用例腳本壮不。
重要鏈接:
官方GitHub地址:github.com/SeleniumHQ/…
官方項目介紹PyPI:pypi.org/project/sel…
Selenium-Python中文文檔:selenium-python-zh.readthedocs.io/en/latest/
二. 安裝selenium
1.安裝python
第一步安裝Python某個版本汗盘,建議安裝Python3.x,因為Python2版本2020年已經(jīng)不再維護了询一。
第二步把Python安裝目錄添加到環(huán)境變量中隐孽。
網(wǎng)上一搜就有很多教程,這里不再贅余健蕊。
2.安裝selenium
如果您的系統(tǒng)上有pip菱阵,則可以簡單地安裝或升級Python綁定:
pip install selenium
三. selenium3 瀏覽器驅(qū)動
當selenium升級到3.0之后,對不同的瀏覽器驅(qū)動進行了規(guī)范缩功。如果想使用selenium驅(qū)動不同的瀏覽器晴及,必須單獨下載并設置不同的瀏覽器驅(qū)動。
Chrome瀏覽器驅(qū)動:chromedriver
Firefox瀏覽器驅(qū)動:geckodriver
IE瀏覽器驅(qū)動:IEDriverServer
其他瀏覽器驅(qū)動自行上網(wǎng)查找嫡锌。
推薦使用 chrome 瀏覽器的 chromedriver.exe虑稼,對應 chrome 版本一定要對哦,不然運行不起來的势木。 瀏覽器驅(qū)動下載后蛛倦,還需要添加到環(huán)境變量中。建議直接mv到/usr/local/bin目錄下面啦桌,或者mv到Python安裝根目錄溯壶,因為這些地址已經(jīng)加到環(huán)境變量中了。
四. 簡單使用
編程語言的學習是從Hello Word入門甫男。
我們selenium的學習當然也不能例外且改,下面就編寫一個簡單的Hello Word文件,開啟學習之路查剖。
打開一款Python編輯器钾虐,默認Python自帶的IDLE也行噪窘。創(chuàng)建 hello.py文件笋庄,輸入以下內(nèi)容:
from selenium import webdriver? ? ? ? ? # 導入瀏覽器驅(qū)動
driver = webdriver.Chrome()? ? ? ? ? ? # 初始化
driver.get('https://www.baidu.com')? ? # 打開百度首頁
print(driver.title)? ? ? ? ? ? ? ? ? ? # 打印網(wǎng)頁標題
driver.quit()? ? ? ? ? ? ? ? ? ? ? ? ? # 關(guān)閉瀏覽器
至此,如果能夠成功打開瀏覽器倔监,恭喜你已經(jīng)成功了直砂。
五. selenium元素定位
Selenium提供了8種定位方式:id、name浩习、class name静暂、tag name、link text谱秽、partial link text洽蛀、xpath和css selector
這8種定位方式在Python selenium中所對應的方法為:
通過 id 定位:find_element_by_id()
通過 name 定位:find_element_by_name()
通過 class 定位:find_element_by_class_name()
通過 tag 定位:find_element_by_tag_name()
通過 link 定位:find_element_by_link_text()
通過 partial_link 定位:find_element_by_partial_link_text()
通過 xpath 定位:find_element_by_xpath()
通過 css 定位:find_element_by_css_selector()
如何使用摹迷?舉個例子吧,假設某個web頁面元素屬性如下所示:
<html>
? <head>
? <body link="#0000cc">
? ? <a id="result_logo" href="/" onmousedown="return c({'fm':'tab','tab':'logo'})">
? ? <form id="form" class="fm" name="f" action="/s">
? ? ? <span class="soutu-btn"></span>
? ? ? ? <input id="kw" class="s_ipt" name="wd" value="" maxlength="255" autocomplete="off">
通過id定位:
dr.find_element_by_id("kw")
通過name定位:
dr.find_element_by_name("wd")
通過class name定位:
dr.find_element_by_class_name("s_ipt")
通過tag name定位:
dr.find_element_by_tag_name("input")
通過xpath定位郊供,xpath定位有N種寫法峡碉,這里列幾個常用寫法:
dr.find_element_by_xpath("http://*[@id='kw']")
dr.find_element_by_xpath("http://*[@name='wd']")
dr.find_element_by_xpath("http://input[@class='s_ipt']")
dr.find_element_by_xpath("/html/body/form/span/input")
dr.find_element_by_xpath("http://span[@class='soutu-btn']/input")
dr.find_element_by_xpath("http://form[@id='form']/span/input")
dr.find_element_by_xpath("http://input[@id='kw' and @name='wd']")
通過css定位,css定位有N種寫法驮审,這里列幾個常用寫法:
dr.find_element_by_css_selector("#kw")
dr.find_element_by_css_selector("[name=wd]")
dr.find_element_by_css_selector(".s_ipt")
dr.find_element_by_css_selector("html > body > form > span > input")
dr.find_element_by_css_selector("span.soutu-btn> input#kw")
dr.find_element_by_css_selector("form#form > span > input")
接下來鲫寄,我們的頁面上有一組文本鏈接。
<a class="mnav" name="tj_trnews">新聞</a>
<a class="mnav" name="tj_trhao123">hao123</a>
通過link text定位:
dr.find_element_by_link_text("新聞")
dr.find_element_by_link_text("hao123")
通過partial link text定位:
dr.find_element_by_partial_link_text("新")
dr.find_element_by_partial_link_text("hao")
dr.find_element_by_partial_link_text("123")
關(guān)于xpaht和css的定位比較復雜疯淫,請參考:
六. 控制瀏覽器操作
1地来、控制瀏覽器窗口大小 有時候我們希望能以某種瀏覽器尺寸打開,讓訪問的頁面在這種尺寸下運行熙掺。例如可以將瀏覽器設置成移動端大小(480* 800)未斑,然后訪問移動站點,對其樣式進行評估币绩;WebDriver提供了set_window_size()方法來設置瀏覽器的大小颂碧。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://m.baidu.com")
# 參數(shù)數(shù)字為像素點
print("設置瀏覽器寬480、高800顯示")
driver.set_window_size(480, 800)
driver.quit()
在PC端執(zhí)行自動化測試腳本大多的情況下是希望瀏覽器在全屏幕模式下執(zhí)行类浪,那么可以使用maximize_window()方法使打開的瀏覽器全屏顯示载城,其用法與set_window_size() 相同,但它不需要參數(shù)费就。
2诉瓦、控制瀏覽器后退、前進 在使用瀏覽器瀏覽網(wǎng)頁時力细,瀏覽器提供了后退和前進按鈕睬澡,可以方便地在瀏覽過的網(wǎng)頁之間切換,WebDriver也提供了對應的back()和forward()方法來模擬后退和前進按鈕眠蚂。下面通過例子來演示這兩個方法的使用煞聪。
from selenium import webdriver
driver = webdriver.Chrome()
#訪問百度首頁
first_url= 'http://www.baidu.com'
print("now access %s" %(first_url))
driver.get(first_url)
#訪問新聞頁面
second_url='http://news.baidu.com'
print("now access %s" %(second_url))
driver.get(second_url)
#返回(后退)到百度首頁
print("back to? %s "%(first_url))
driver.back()
#前進到新聞頁
print("forward to? %s"%(second_url))
driver.forward()
driver.quit()
為了看清腳本的執(zhí)行過程,下面每操作一步都通過print()來打印當前的URL地址逝慧。
3昔脯、刷新頁面 有時候需要手動刷新(F5) 頁面。
driver.refresh() #刷新當前頁面
……
最后感謝每一個認真閱讀我文章的人笛臣,看著粉絲一路的上漲和關(guān)注云稚,禮尚往來總是要有的,雖然不是什么很值錢的東西沈堡,如果你用得到的話可以直接拿走
這些資料静陈,對于做【軟件測試】的朋友來說應該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你鲸拥!凡事要趁早拐格,特別是技術(shù)行業(yè),一定要提升技術(shù)功底刑赶。希望對大家有所幫助…….
關(guān)注我的微信公眾號:【程序員小濠】即可獲取這份資料了禁荒!
如果你不想再體驗一次自學時找不到資料,沒人解答問題角撞,堅持幾天便放棄的感受的話呛伴,可以加入我們的群:779450660 大家一起討論交流,里面也有各種軟件測試資料和技術(shù)交流谒所。
如果對你有幫助的話热康,點個贊收個藏,給作者一個鼓勵劣领。也方便你下次能夠快速查找姐军。