如何用 Python 做自動(dòng)化測(cè)試

一椅贱、Selenium 環(huán)境部署

1. window 環(huán)境部署

1.1 當(dāng)前環(huán)境

Win10 64 位系統(tǒng)慌洪;Python3.6.2(官方已經(jīng)更新到了 3.6.4)

官方下載地址:https://www.python.org/downloads

Selenium 3.4.3;谷歌 59穗慕。

Python學(xué)習(xí)資料或者需要代碼饿敲、視頻加Python學(xué)習(xí)群:960410445

1.2 Python3 安裝部署

Python 的安裝接觸編程語言中很簡(jiǎn)單的語言了。不需要繁瑣的 JDK逛绵,也不需要 SDK怀各。直接到官網(wǎng)下載,配置環(huán)境就成功了术浪。

首先到官網(wǎng)下載我們需要的 Python3 版本:

點(diǎn)進(jìn)去直接下載:

1.3 配置環(huán)境變量

安裝好之后瓢对,我們就可以在文件夾看到我們下載好的 Python 文件了。

路徑為: D:\python3.6.2胰苏。

現(xiàn)在我們?nèi)ヅ渲铆h(huán)境變量吧沥曹。

回到桌面,同時(shí)按下 WIN+R 鍵碟联,打開 “運(yùn)行” 對(duì)話框,輸入 sysdm.cpl僵腺,單擊 “確定” 按鈕:

選擇 “高級(jí)” 選項(xiàng)卡:

編輯當(dāng)前路徑:

到這里鲤孵,我們配置環(huán)境就已經(jīng)完成了,但是還是需要驗(yàn)證我們是否成功安裝的辰如。按 WIN+R普监,打開 “運(yùn)行” 對(duì)話框,我們輸入 cmd:

輸入 python:

顯示版本信息就證明已經(jīng)部署成功了琉兜,接下來我們就可以開始學(xué)習(xí) python 了凯正。

1.4 安裝 Selenium

現(xiàn)在我們就可以直接安裝 Selenium 了,重新打開 cmd 窗口豌蟋,輸入:pip ?查看是否存在 pip 命令:

如果不存在首先檢查自己的環(huán)境變量是否配置正確了廊散;第二檢查 Python 文件夾下的 Scripts 文件夾下是否有 pip.exe 這個(gè)文件;如果這兩步都沒問題梧疲,就重新下載 python 文件允睹。因?yàn)?pip 這個(gè)命令對(duì)我們來說是非常重要的运准。

接下來我們安裝 Selenium,在 cmd 窗口中輸入:pip install selenium:

1.5 驅(qū)動(dòng)下載

這個(gè)是很多新手都會(huì)碰到的問題缭受。其實(shí)也不用擔(dān)心胁澳,因?yàn)?Selenium 驅(qū)動(dòng)對(duì)不同版本的瀏覽器也是不一樣的,所以很多人都會(huì)遇到這個(gè)問題了米者。

當(dāng)前我使用的瀏覽器是谷歌瀏覽器韭畸。單擊這里下載谷歌瀏覽器驅(qū)動(dòng)。如果使用的火狐瀏覽器的蔓搞,就需要先將瀏覽器版本降級(jí)了胰丁,所以我不推薦使用火狐瀏覽器。

我們進(jìn)去選擇自己瀏覽器對(duì)應(yīng)版本的驅(qū)動(dòng)下載吧:

上面兩個(gè)驅(qū)動(dòng)都是對(duì)谷歌 59 兼容的败明,下載完之后隘马,我們將下載的文件放在 Python 的根目錄下就可以了。

接下來測(cè)試自己的 Selenium 是否可以啟動(dòng)瀏覽器了妻顶,在 cmd 中輸入 Python:

然后輸入 from selenium import webdriver webdriver.Charome()

看到啟動(dòng)瀏覽器酸员,我們就已經(jīng)成功安裝 Selenium 了 。

1.6 Pycharm 安裝

官方下載地址請(qǐng)單擊這里

安裝完之后讳嘱,我們需要輸入注冊(cè)碼:選擇 license幔嗦,輸入 http://idea.lanyus.com/ 這個(gè)地址,點(diǎn)擊 OK 就可以了沥潭。如果沒有輸入邀泉,也不用擔(dān)心,進(jìn)入 pycharm 之后钝鸽,點(diǎn)擊 Help-Register- 選擇 license:

這樣也是可以的』阈簦現(xiàn)在我們已經(jīng)把前面所需要的條件都完成了。

選擇我們存放的路徑和項(xiàng)目命名:

我們重溫編程語言經(jīng)典的輸出:

我們可以點(diǎn)擊上面的 Run 或者使用快捷鍵 Shift+Ctrl+F10 可以直接看到結(jié)果了:

看到的結(jié)果拔恰,我們就成功了:

二因谎、Selenium 的定位元素操作

我們?cè)诰W(wǎng)上看到的很多方法,都是使用 Firefox 中的插件 firebug 工具對(duì)元素進(jìn)行定位的颜懊,但是現(xiàn)在 Firefox 已經(jīng)不再對(duì) firebug 進(jìn)行維護(hù)了财岔,也就是 firebug 也即將需要從市場(chǎng)淘汰出去了。

所以河爹,我們會(huì)在這里使用的是谷歌的頁(yè)面定位的匠璧,其實(shí)也就很簡(jiǎn)單的事。我們通過在頁(yè)面中按 F12 查看頁(yè)面就的元素咸这,找到我們需要的元素夷恍,點(diǎn)擊右擊就可以看到我們需要定位的操作了。

Selenium 給我們提供了 8 種的定位元素方法媳维,我們拿百度首頁(yè)作為例子裁厅。

2.1 find_element_by_id()

我們可以直接通過英文意思理解這個(gè)方法冰沙,通過 ID 查找元素,也就是使用頁(yè)面里的 id 屬性:id = “”执虹。我們先定位百度搜索框拓挥,在搜索框里面輸入我們要查找的內(nèi)容。

2.2 find_element_by_name()

這個(gè)定位的方法是通過查找名字的方式袋励,對(duì)元素進(jìn)行定位侥啤。我們?cè)跈z查元素的時(shí)候看到 name=””,就可以使用這個(gè)方法了茬故。

2.3 find_elements_by_class_name()

這個(gè)定位的方法是通過查找 class_name 的方式對(duì)元素進(jìn)行定位盖灸,在檢查元素的時(shí)候看到 class=””,就可以使用這個(gè)方法了磺芭。

2.4 find_element_by_tag_name()

這個(gè)定位的方法是通過元素的標(biāo)簽屬性對(duì)元素進(jìn)行定位赁炎,在檢查元素的時(shí)候查看元素的最前面的 input,但是這個(gè)定位方式有個(gè)不好的地方在于很多頁(yè)面都有同樣的標(biāo)簽存在钾腺,所以我們定位的時(shí)候會(huì)很麻煩徙垫。

所以,這個(gè)方法我們不推薦使用放棒。這個(gè)方法也是僅供參考姻报。

實(shí)際上是會(huì)報(bào)錯(cuò)的,因?yàn)?selenium 在定位的時(shí)候不清楚我們要找的是哪個(gè)元素间螟。

我們?nèi)绻欢ㄒ眠@個(gè)方法的話吴旋,我們就需要清楚,我們定位的標(biāo)簽的精準(zhǔn)位置了厢破。

2.5 find_element_by_link_text()

這個(gè)定位方式是通過查找頁(yè)面的文本信息進(jìn)行定位荣瑟。也就是我們看到頁(yè)面的信息去定位,例如:我們需要定位百度首頁(yè)的登錄按鈕摩泪,并點(diǎn)擊它褂傀。

2.6 find_element_by_partial_link_text()

這個(gè)方法的定位方式就是通過模糊文本信息查找元素,有些時(shí)候加勤,我們希望定位到一個(gè)文本比較長(zhǎng)的元素時(shí),我們就可以通過這個(gè)方法去定位同波。

例如:定位百度首頁(yè)頁(yè)腳下的 “使用百度前必讀”鳄梅,我們是輸入 “使用”。

這樣我們也是可以定位到該元素的未檩。

2.7 find_element_by_xpath()

最后來說兩種最常用的定位方法戴尸,xpath 元素定位:通過查找元素的路徑去查找元素。

這兩個(gè)方法在使用上目前很廣泛冤狡,也很多人推薦使用的方法孙蒙。這兩個(gè)很方便项棠,因?yàn)闉g覽器已經(jīng)幫我們做好準(zhǔn)備了,我們只需要復(fù)制粘貼就可以了挎峦。

我們繼續(xù)定位搜索框香追。

這樣我們直接復(fù)制 xpath 路徑就可以了,這樣就可以解決我們會(huì)輸入錯(cuò)誤元素的問題(注:在使用 xpath 的時(shí)候坦胶,最外面的雙引號(hào)改成單引號(hào))

2.8 find_element_by_css_selector()

css 在操作上跟 xpath 差不多透典,也是通過復(fù)制粘貼的方式進(jìn)行定位,不同在于 css 方法通過對(duì)頁(yè)面中的 css 元素定位的顿苇。

三 峭咒、Autolt 的應(yīng)用

3.1 Autolt3 下載安裝

AutoIt 目前最新是 v3 版本,這是一個(gè)使用類似 BASIC 腳本語言的免費(fèi)軟件 , 它設(shè)計(jì)用于 Windows GUI(圖形用戶界面) 中進(jìn)行自動(dòng)化操作纪岁。

它利用模擬鍵盤按鍵凑队,鼠標(biāo)移動(dòng)和窗口 / 控件的組合來實(shí)現(xiàn)自動(dòng)化任務(wù)。而這是其它語言不可能做到或無可靠方法實(shí)現(xiàn)的

官方下載:https://www.autoitscript.com/site/autoit/downloads幔翰。

>

點(diǎn)擊下載

點(diǎn)擊 next

點(diǎn)擊 I Agree

選擇安裝 64 位或者 32 位漩氨,我這里選擇安裝的是 64 位的 Autolt,點(diǎn)擊 next

點(diǎn)擊 next

點(diǎn)擊 next

選擇安裝的路徑导匣,點(diǎn)擊 install

這里的 √ 去掉才菠,點(diǎn)擊 finish,這樣就已經(jīng)完成了贡定。

3.2 Autolt3 使用

現(xiàn)在就來試試怎樣去操作赋访,去到” 開始” 菜單。

我們可以看到 Autolt 有以下文件缓待,我們主要來看三個(gè)文件:Autolt Window Info(x64)蚓耽、Compile Script to .exe(x64)、SciTE Script Editor旋炒。

第一個(gè)文件是用來錄制我們操作的步驟步悠,第二個(gè)文件是將我們的 .au 文件轉(zhuǎn)換成我們最終的 .exe 文件,第三個(gè)是編輯我們 .au 文件瘫镇。這樣一來鼎兽,我們就基本了解 Autolt 的使用流程了。

3.3 Autolt3 文件操作

首先我們需要打開 Autolt Window Info(x64) 這個(gè)文件:

在 pycharm 里創(chuàng)建一個(gè)命名為 “upload” 的 HTML 文件铣除,

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>upload_Title</title>

<link href="http:// cdn.bootcss.com/bootstrap/3.3.0/ css/bootstrap.min.css" rel="stylesheet" />

</head>

<body>

<div class="row-fluid">

<div class="span6 well">

<h3>upload_file</h3>

<input type="file" name="file" />

</div>

</div>

</body>

<script src= "http://cdn.bootcss.com/bootstrap/3.3.0/ css/ bootstrap.min.js " ></script>

</html>

將這段代碼復(fù)制粘貼谚咬,然后打開:

點(diǎn)擊選擇文件,會(huì)打開一個(gè)窗口:

現(xiàn)在我們使用 autolt 工具來定位窗口的位置尚粘,拖動(dòng)圓點(diǎn):

將移動(dòng)到的位置的信息記錄下來择卦,點(diǎn)擊 Control 可以看到信息窗口的 title 為 “打開”,標(biāo)題的 Class 為 “#32770”。

文件名輸入框的 class 為 “Edit”秉继,Instance 為 “1” 祈噪,所以 ClassnameNN 為 “Edit1”。打開按鈕的 class 為 “Button”尚辑,Instance 為 “1” 辑鲤,所以 ClassnameNN 為 “Button1”。

這樣我們就可以編輯腳本信息了腌巾,打開 SciTE Script Editor 編輯腳本信息

ControlFocus("title","text",controlID) Edit1=Edit instance 1 ControlFocus(" 打開 ", "","Edit1") ;

Wait 10 seconds for the Upload window to appear WinWait("[CLASS:#32770]","",10) ;

Set the File name text on the Edit field ControlSetText(" 打開 ", "", "Edit1", " E:\\ upload.txt")

Sleep(2000) ; Click on the Open button ControlClick(" 打開 ",

"","Button1");

這樣的腳本有一個(gè)問題就是遂填,我們的腳本路徑已經(jīng)寫死了,這樣對(duì)于我們后期的自動(dòng)化測(cè)試是行不通的澈蝙。

所以我們必須將寫死的路徑改活吓坚。我們將 upload.txt 文件放在我們的自動(dòng)化測(cè)試腳本里面。

我們?cè)偃バ薷奈覀兡_本的路徑 ControlSetText(“ 打開 “, “”, “Edit1”, @WorkingDir & “ \file\upload.txt”)灯荧。

這段代碼的意思就是礁击,打開當(dāng)前文件夾上一個(gè)文件的相對(duì)路徑,這樣就可以防止我們的代碼寫死了逗载。

這樣我們就編輯好了腳本信息了哆窿,保存我們的文件,會(huì)生成 .au 的文件厉斟,但是這個(gè)文件不是我們想要的挚躯,我們要得到的是 .exe 的文件,打開 Compile Script to .exe(x64) 文件擦秽,將 .au 的文件轉(zhuǎn)換成 .exe 文件就可以了码荔。

點(diǎn)擊 Convert 就 ok 了,在當(dāng)前文件夾下我們就可以看到生成的 .exe 文件了感挥。

具體文件都放在這里了∷踅粒現(xiàn)在我們就可以去調(diào)用 upload.exe 文件了,新建命名為 uploadfile 的 python 文件触幼。

from selenium import webdriver import os driver = webdriver.Chrome() #打開上傳功能頁(yè)面 file_path = 'file:///' + os.path.abspath('upload.html') driver.get(file_path)#點(diǎn)擊打開上傳窗口 driver.find_element_by_name("file").click() #調(diào)用 upfile.exe 上傳程序 os.system(os.path.abspath('upload.exe')) driver.quit()

將這段代碼輸入進(jìn)去硼瓣,就可以調(diào)用了。這樣一來置谦,我們的 Autolt 學(xué)習(xí)就完成了堂鲤。更多的 Autolt 語法,可以去官網(wǎng)看詳細(xì)的文檔媒峡。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瘟栖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子丝蹭,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奔穿,死亡現(xiàn)場(chǎng)離奇詭異镜沽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)贱田,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門缅茉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人男摧,你說我怎么就攤上這事蔬墩。” “怎么了耗拓?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵拇颅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我乔询,道長(zhǎng)樟插,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任竿刁,我火速辦了婚禮黄锤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘食拜。我一直安慰自己鸵熟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布负甸。 她就那樣靜靜地躺著流强,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惑惶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天带污,我揣著相機(jī)與錄音僵控,去河邊找鬼。 笑死鱼冀,一個(gè)胖子當(dāng)著我的面吹牛报破,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播改备,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼控漠,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了悬钳?” 一聲冷哼從身側(cè)響起盐捷,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎默勾,沒想到半個(gè)月后碉渡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灾测,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年爆价,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媳搪。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铭段,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出秦爆,到底是詐尸還是另有隱情序愚,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布等限,位于F島的核電站爸吮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏望门。R本人自食惡果不足惜形娇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望筹误。 院中可真熱鬧桐早,春花似錦、人聲如沸厨剪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祷膳。三九已至陶衅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間直晨,已是汗流浹背搀军。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工膨俐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人罩句。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓吟策,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親的止。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

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

  • 懂得很多的道理但是仍然過不好這一生着撩。 這一句話诅福,時(shí)常能看見,很疑惑拖叙。 一點(diǎn)點(diǎn)去經(jīng)歷的時(shí)候氓润,才明白這世界根本就其實(shí)換...
    羅嫚閱讀 263評(píng)論 2 5
  • 我還是討厭著數(shù)學(xué)一直沒變 如果一切都是關(guān)于“0”的問題那應(yīng)該都好解決 任何數(shù)除以0沒有意義 為什么大家都在找質(zhì)數(shù)的...
    熟悉黑夜的男孩閱讀 279評(píng)論 0 0
  • 好久沒有你的信,好久沒有人陪我談心薯鳍,懷念你柔情似水的眼睛咖气,是我天空最美麗的星星,異鄉(xiāng)的午夜特別冷清挖滤,一個(gè)男人和一...
    釋空沙閱讀 177評(píng)論 0 0
  • 1.我為什么需要清單崩溪? 因?yàn)槲沂莻€(gè)拖延癥重度患者,所以有在學(xué)習(xí)時(shí)間管理斩松,精力管理伶唯,也加入了行動(dòng)營(yíng)來讓自己克服惰性。...
    小伊Eva閱讀 355評(píng)論 0 3