2022年夷狰,總結(jié)了一份4000字Selenium 學習筆記

目錄

一. 背景

二. 安裝selenium

三. selenium3 瀏覽器驅(qū)動

四. 簡單使用

五. selenium元素定位

六. 控制瀏覽器操作

一. 背景

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的定位比較復雜疯淫,請參考:

xpath語法

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ù)交流谒所。

如果對你有幫助的話热康,點個贊收個藏,給作者一個鼓勵劣领。也方便你下次能夠快速查找姐军。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市尖淘,隨后出現(xiàn)的幾起案子奕锌,更是在濱河造成了極大的恐慌,老刑警劉巖村生,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惊暴,死亡現(xiàn)場離奇詭異,居然都是意外死亡趁桃,警方通過查閱死者的電腦和手機辽话,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門他托,熙熙樓的掌柜王于貴愁眉苦臉地迎上來筑煮,“玉大人,你說我怎么就攤上這事坯钦◇翱粒” “怎么了益咬?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長帜平。 經(jīng)常有香客問我幽告,道長,這世上最難降的妖魔是什么罕模? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任评腺,我火速辦了婚禮帘瞭,結(jié)果婚禮上淑掌,老公的妹妹穿的比我還像新娘。我一直安慰自己蝶念,他們只是感情好抛腕,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布芋绸。 她就那樣靜靜地躺著,像睡著了一般担敌。 火紅的嫁衣襯著肌膚如雪摔敛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天全封,我揣著相機與錄音马昙,去河邊找鬼。 笑死刹悴,一個胖子當著我的面吹牛行楞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播土匀,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼子房,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了就轧?” 一聲冷哼從身側(cè)響起证杭,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妒御,沒想到半個月后解愤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡乎莉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年琢歇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梦鉴。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡李茫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肥橙,到底是詐尸還是另有隱情魄宏,我是刑警寧澤,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布存筏,位于F島的核電站宠互,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏椭坚。R本人自食惡果不足惜予跌,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望善茎。 院中可真熱鬧券册,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至骄蝇,卻和暖如春膳殷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背九火。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工赚窃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人岔激。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓考榨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鹦倚。 傳聞我的和親對象是個殘疾皇子河质,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容