Python+Selenium自動化環(huán)境搭建與操作基礎(chǔ)詳解
一、環(huán)境搭建
1、python 安裝
下載地址:點擊這里下載
選擇合適的版本進行安裝
根據(jù)自己的操作系統(tǒng)類型以及位數(shù)選擇
WINDOS + R 輸入cmd
打開DOS窗口,檢查環(huán)境變量是否配置正確
(1)python -V ,返回python版本號
(2)pip -V ,返回pip工具版本號
2、pycharm 下載安裝
(1)pycharm下載
下載地址:點擊這里下載
右側(cè)為社區(qū)版,開源免費
左側(cè)為專業(yè)版,收費
(2) 安裝
運行exe程序,點擊【Next】
選擇安裝目錄后,點擊【Next】
勾選相關(guān)選項后點擊【Next】
點擊【Install】完成安裝
等待安裝完成即可
點擊【Finish】完成安裝
(3)創(chuàng)建項目
運行pycharm,點擊【New Project】
配置項目基本信息
(1) 選擇項目的存儲路徑
(2) 選擇項目依賴的Python庫,會在項目中創(chuàng)建一個venv
的虛擬環(huán)境
(3) 關(guān)聯(lián)本地的Python解釋器,如果不想使用venv可以選擇本地解釋器的可執(zhí)行文件
建議選擇New environment using
, 然后在Base interpreter
中選擇前面安裝的Python解釋器的路徑。這樣做的好處:每個項目都是獨立的空間,不會存在版本依賴沖突的問題,沖分發(fā)揮了虛擬環(huán)境的靈活性。修改完畢之后,點擊Creat
,創(chuàng)建項目。這樣就創(chuàng)建了一個最初始的空項目
創(chuàng)建腳本
在項目名稱上點擊鼠標右鍵,創(chuàng)建一個python文件
輸入腳本名稱,按Enter
鍵創(chuàng)建文件
3、selenium 下載安裝
(1) 通過 pip 命令下載
WINDOS + R 輸入CMD 打開DOS窗口
輸入:pip insatall selenium
如果在安裝時出現(xiàn)了以下內(nèi)容,就是pip版本的問題,
輸入:python.exe -m pip install --upgrade pip
升級一下版本就行
安裝完成后 可以在 python>lib>site-packages目錄下查看
(2) 通過 pycharm 下載
打開pycharm 點擊左上角 【file】 選擇 settings
選擇項目 ,點擊【+】
輸入selenium
,選擇合適的版本(可以不選擇版本) 雙擊進行安裝
(3) 通過下載selenium安裝包進行下載
下載地址:點擊這里下載
下載完成后放在 python>lib>site-packages 目錄下
或者
項目所在位置 如 D:\pythonProject\venv\Lib\site-packages
4、瀏覽器驅(qū)動下載安裝
注意?。?! 驅(qū)動版本必須要和瀏覽器版本一致
查看瀏覽器版本一般在瀏覽器設(shè)置中的關(guān)于里面,用Edge瀏覽器舉例:版本號為:版本 96.0.1054.62
驅(qū)動下載后放置于放在python根目錄下
(1)Edge 驅(qū)動下載安裝
下載地址:點擊這里下載
注意版本一致,系統(tǒng)一致
(2)Chrome 驅(qū)動下載安裝
下載地址:點擊這里下載
Chrome驅(qū)動 瀏覽器最新版在網(wǎng)頁靠近下方位置
點擊相應(yīng)版本進去
點擊文件將自動下載
(3)IE 驅(qū)動下載安裝
下載地址:點擊這里下載
官網(wǎng)有4.0版的IE驅(qū)動,點擊即可下載
其他版本下載地址:
下載地址:點擊這里下載
(4)Firefox 驅(qū)動下載安裝
下載地址:點擊這里下載
這里是版本號:
在這里下載:
另外這個網(wǎng)站也可以下載
下載地址:點擊這里下載
二、Selenium 簡介
Selenium 是什么?
Selenium是針對Web應(yīng)用的開源自動化測試工具,通過編寫模擬用戶操作的腳本,它會打開瀏覽器對Web應(yīng)用進行黑盒測試??梢苑奖愕挠糜诠δ軠y試、兼容性測試、 穩(wěn)定性測試及并發(fā)測試。目前已被主流瀏覽器廠商廣泛支持,同時也是很多其它自動化測試工具(比如,RobotFramework)的底層核心技術(shù)。Selenium由IDE、Remote Control(簡稱RC)、WebDriver、Grid四個工程組成:
(1)Selenium IDE
是一個用于錄制/回放測試腳本的Firefox附加組件,錄制的腳本可以生成基于Selenium RC的測試代碼(Java、Ruby、C#等)。適用于快速入門,不太適用于實際較大的測試項目;
(2)Selenium RC
RC由Server和Client組成兩部分組成,Server負責加載/關(guān)閉瀏覽器以及作為HTTP代理來訪問Web應(yīng)用,Clinet支持多種編程語言和測試框架(TestNG、JUnit、NUnit等)。
(3)Selenium WebDriver
WebDriver作為Selenium2的核心特性提供比RC更簡潔易用的API,是官方推薦的RC替代方案??梢愿玫闹С謩討B(tài)網(wǎng)頁,不需要再額外啟動一個獨立的Server。
(4)Selenium Grid
是Selenium的一個擴展工具,可以很方便地同時在多臺機器上和異構(gòu)環(huán)境中并行運行多個RC或WebDriver用例。
三、常用方法
1、瀏覽器操作
打開瀏覽器: (必須具備相應(yīng)的驅(qū)動程序,如果打不開,基本是驅(qū)動程序配置有問題)
- webdriver.Chrome() #打開谷歌瀏覽器 - webdriver.Firefox() #打開火狐瀏覽器 - webdriver.Edge() #打開Edge瀏覽器 - webdriver.Ie() #打開IE瀏覽器 - webdriver.Safari() #打開Safari瀏覽器 - webdriver.Opera() #打開Opera瀏覽器
關(guān)閉瀏覽器
- quit() #退出瀏覽器--退出整個瀏覽器 - close() #關(guān)閉瀏覽器--當前頁面【開了多個頁面時,無法關(guān)閉】 - os.system('taskkill /im chrome.exe /F') #殺死進程
刷新瀏覽器
dr.refresh() #刷新
前進后退
dr.forward() #前進 dr.back() #后退
調(diào)整窗口大小
dr.maximize_window() dr.minimize_window() dr.set_window_size(300,400)
訪問URL地址
dr.get('http://192.168.14.162:8081/agileone1/')
2、如何獲取頁面元素
首先打開瀏覽器,按F12 進入開發(fā)者模式
點擊右上角三個點,可以選擇開發(fā)框停靠位置,點擊元素即可查看頁面屬性詳情
使用開發(fā)欄左上角檢查功能 快捷鍵CTRL+SHIFT+C,鼠標懸停至一個元素時,會自動定位到HTML元素位置
當我們定位到該元素的時候 ,可以去查看它包含了哪些屬性,適合使用哪些屬性進行定位:
屬性定位優(yōu)先級 : ID>Name>CSS>XPath
快捷復(fù)制元素屬性值的方法:
1、選擇合適的屬性,雙擊 CTRL+C
2、定位到屬性后鼠標郵件,選擇復(fù)制(COPY)—> 選擇合適的類型
3、查找定位頁面元素的方法
方式一 :
單個元素獲取 (有時候會提示此種方式已經(jīng)被拋棄了,可以選擇第二種方式進行獲取)
- driver.find_element_by_id('username') #通過id獲取 - driver.find_element_by_class_name('login-password') #通過class獲取 - driver.find_element_by_name('') #通過name 屬性獲取 - driver.find_element_by_link_text('※ 公告管理 ※') #通過超鏈接文本獲取 - driver.find_element_by_partial_link_text('公告管理') #通過超鏈接文本部分獲取 - driver.find_element_by_css_selector('input#username.login-username') #通過CSS獲取 - driver.find_element_by_tag_name('input') #通過tag name定位 - driver.find_element_by_xpath('//*[@id="username"]) #通過xpath定位
批量元素獲取
driver.find_elements_by_屬性名('屬性值')
示例:
driver.find_elements_by_class_name('form-control')[0].send_keys('admin')
方式二:
需要導(dǎo)入模塊 from selenium.webdriver.common.by import By
單個元素獲?。?/p>
- driver.find_element(by=By.ID,value="屬性值") #通過ID定位 - driver.find_element(by=By.XPATH,value="屬性值") - driver.find_element(by=By.CLASS_NAME,value="屬性值") - driver.find_element(by=By.CSS_SELECTOR,value="屬性值") - driver.find_element(by=By.NAME,value="屬性值") - driver.find_element(by=By.LINK_TEXT,value="屬性值") - driver.find_element(by=By.TAG_NAME,value="屬性值") - driver.find_element(by=By.PARTIAL_LINK_TEXT,value="屬性值")
多元素獲?。?/p>
driver.find_elements(by=By.ID,value='屬性值')[索引位置].send_keys('輸入的內(nèi)容')
例子:
driver.find_elements(by=By.ID,value='username')[0].send_keys('admin')
4、操作方法
代碼 | 操作 |
---|---|
send_keys(‘輸入內(nèi)容’) | 輸入文本 |
click() | 點擊 |
clear() | 清空 |
text | 獲取文本信息 |
double_click | 雙擊 |
context_click | 右鍵 |
move_to_element | 懸停 |
drag_and_drop(before,after) | 拖拽 |
5、下拉框操作
Select(driver.find_element_by_id('scope')).select_by_visible_text('所有項目') #依據(jù)文本 Select(driver.find_element_by_id('scope')).select_by_index(1) #依據(jù)索引位置 Select(driver.find_element_by_id('scope')).select_by_value('0') #依據(jù)value值
6、WINDOS彈窗
driver.switch_to.alert().accept() #alert--提示確認: driver.switch_to.alert.dismiss() #取消 driver.switch_to.alert.send_keys() #文本提示 driver.switch_to.alert.text #獲取提示框中的文本信息
7、iframe內(nèi)嵌頁面處理
處理鑲嵌在HTML頁面中iframe頁面(一個HTML頁面中包裹著另一個HTML頁面)
首選需要定位到該內(nèi)嵌頁面:
iframe=driver.find_element(by="xpath",value="/html/body/div[2]/div[3]/div[1]/div/div[4]/div[1]/div[1]/iframe")
然后切換焦點
driver.switch_to.frame(iframe) #切換至內(nèi)嵌頁面
切換后執(zhí)行操作
driver.find_element(by="name",value="email").clear() #清除內(nèi)容 time.sleep(0.5) driver.find_element(by="name",value="email").send_keys("a123456") #輸入賬戶 time.sleep(0.5) driver.find_element(by="name",value="password").clear() #清除內(nèi)容 time.sleep(0.5) driver.find_element(by="name", value="password").send_keys("a123456") #輸入密碼 time.sleep(0.5) driver.find_element(by="id",value="dologin").click() #點擊進入郵箱首頁
執(zhí)行完成后切換至父級界面
driver.switch_to.parent_frame() # 切回父級頁面
8、上傳文件
1、針對與<input>
標簽,以及 type=file
類型,可以直接輸用send_keys
driver.find_element_by_id("imgfile").send_keys("D:\pictyres\selenium.png")
2、使用鍵盤事件上傳文件
需要安裝 pykeyboard
模塊
driver.find_element_by_xpath('元素位置').click() pk=PyKeyboard() #實例化 pk.type_string(r'文件路徑') pk.press_key(pk.enter_key) #按壓 pk.release_key(pk.enter_key) #釋放
9、切換頁面
句柄切換 driver.switch_to.window('新句柄')
for handle in driver.window_handles: #遍歷 if handle !=driver.current_window_handle: driver.switch_to.window(handle) #句柄切換 driver.swithch_to_window(driver.window_handles[-1]) print(driver.current_window_handle)
10、截圖
driver.get_screenshot_as_file(filename) driver.save_screenshot(filename) driver.get_screenshot_as_png() driver.get_screenshot_as_base64()
以下是我在實際運用中獲取截圖寫入數(shù)據(jù)庫的一個方法
11、等待時間
強制等待 :
首先需要導(dǎo)包 import time
time.sleep(2),常用于獲取文本前設(shè)置,單位秒
隱式等待:
常用于初始化時,設(shè)置全局等待
dr.implicitly_wait(5)
顯示等待:
常用于指定元素出現(xiàn)時方可操作
WebDriverWait(driver=dr,timeout=5,poll_frequency=0.5).until(lambda dr:dr.find_element_by_link_text('注銷'))
12 、 js注入
(1) 滑動到指定位置
target = driver.find_elements_by_class_name(f"屬性值")[0] # 獲取元素 driver.execute_script("arguments[0].scrollIntoView();", target) # 滑動到指定元素位置
(2)上滑下滑頁面
driver.execute_script('window.scrollBy(0,600)') # 下滑頁面 driver.execute_script('window.scrollBy(0,-600)') # 上滑頁面
13 、斷言方法及策略
在斷言時,應(yīng)盡可能的使用and方法覆蓋以下斷言方法
1.檢查文本提示信息是否滿足預(yù)期
2.檢查數(shù)據(jù)后臺數(shù)據(jù)是否正確(后臺 前端)—數(shù)據(jù)庫斷言 表 字段pymysql 連接 游標 SQL 獲取結(jié)果
3.業(yè)務(wù)洛基斷言:選擇關(guān)聯(lián)的功能來確定正確性,比如:上傳文件,斷言:搜索文件是否存在且一致
4.斷言方法
is_displayed()
顯示,存在
以上就是Python+Selenium自動化環(huán)境搭建與操作基礎(chǔ)詳解的詳細內(nèi)容,更多關(guān)于Python Selenium環(huán)境搭建的資料請關(guān)注腳本之家其它相關(guān)文章!
- Python語言中的Selenium環(huán)境搭建
- Selenium+Python自動化腳本環(huán)境搭建的全過程
- selenium3.0+python之環(huán)境搭建的方法步驟
- Python selenium環(huán)境搭建實現(xiàn)過程解析
- Python+Selenium實現(xiàn)自動化的環(huán)境搭建的步驟(圖文)
- selenium+python自動化測試環(huán)境搭建步驟
- selenium+python自動化測試之環(huán)境搭建
- selenium3+python3環(huán)境搭建教程圖解
- Python + selenium自動化環(huán)境搭建的完整步驟
- python+selenium開發(fā)環(huán)境搭建圖文教程
- 搭建?Selenium+Python開發(fā)環(huán)境詳細步驟