一椅贱、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ì)的文檔媒峡。