一、python
1、python下載與安裝
官方下載地址:Python Releases for Windows | Python.orghttps://www.python.org/downloads/windows/
下載應(yīng)用程序,雙擊運行
選擇install now進行安裝,下方勾選第二個選項系統(tǒng)可自動添加環(huán)境變量
?
等待python安裝
?安裝完成后,點擊“Close”關(guān)閉
進入cmd驗證是否已完成安裝:
python -V
出現(xiàn)版本號則安裝成功
2、pycharm下載與安裝
官方下載地址:Download PyCharm: Python IDE for Professional Developers by JetBrainsDownload the latest version of PyCharm for Windows, macOS or Linux.https://www.jetbrains.com/pycharm/download/#section=windows
進入官方下載地址
?專業(yè)版:付費但是可以試用
?社區(qū)版:免費
這里我們下載社區(qū)版就可以(左邊是專業(yè)版,右邊社區(qū)版)。覺得社區(qū)版不好用的兄弟可以下載專業(yè)版進行破解,百度有很多教程,這里我就不多講了。
點擊Download進行下載,下載完成后得到一個可執(zhí)行文件
?
雙擊運行,點擊Next
?
可使用默認安裝目錄,也可以自定義目錄。點擊Next?
?
?勾選選項后,點擊“Next”
??
點擊“Install”進行安裝?,安裝完成需要等待一等鐘左右
?
安裝完成后點擊“Finish”
?
?二、Selenium
1、Selenium簡介
Selenium 是最廣泛使用的開源 Web UI(用戶界面)自動化測試套件之一。Selenium 支持的語言包括C#,Java,Perl,PHP,Python 和 Ruby。目前,Selenium Web 驅(qū)動程序最受 Python 和 C#歡迎。 Selenium 測試腳本可以使用任何支持的編程語言進行編碼,并且可以直接在大多數(shù)現(xiàn)代 Web 瀏覽器中運行。
2、selenium安裝
selenium的安裝
打開 cmd,輸入下面命令進行安裝。
pip install selenium
# 如果第一個命令無法安裝可以使用第二個
pip3 install selenium
3、瀏覽器驅(qū)動
針對不同的瀏覽器,需要安裝不同的驅(qū)動。下面列舉了常見的瀏覽器與對應(yīng)的驅(qū)動程序下載鏈接。
- Firefox?瀏覽器驅(qū)動:Firefox
- Chrome?瀏覽器驅(qū)動:Chrome
- IE?瀏覽器驅(qū)動:IE
- Edge?瀏覽器驅(qū)動:Edge
這里以安裝?Chrome
?驅(qū)動作為演示。
在新標簽頁輸入?chrome://settings/
?進入設(shè)置界面,然后選擇 【關(guān)于 Chrome】
查看自己的版本信息。下載對應(yīng)版本的?Chrome
?驅(qū)動即可。
下載驅(qū)動
打開?Chrome驅(qū)動?。單擊對應(yīng)的版本。
?
?根據(jù)自己的操作系統(tǒng),選擇下載。
?下載完成后,壓縮包內(nèi)只有一個?exe
?文件。
將?chromedriver.exe
?保存到python安裝目錄
?
?4、selenium元素定位????????
下面我們再來看看幾種常見的頁面元素定位方式。
元素示例:
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
id 定位
標簽的?id
?具有唯一性。我們可以通過?id
?定位到它,由于?id
?的唯一性,我們可以不用管其他的標簽的內(nèi)容。
driver.find_element_by_id("kw")
name 定位
name
?指定標簽的名稱,在頁面中可以不唯一。
driver.find_element_by_name("wd")
class 定位
class
?指定標簽的類名,在頁面中可以不唯一。
driver.find_element_by_class_name('s_ipt')
link 定位
link
?專門用來定位文本鏈接,假如要定位下面這一標簽。
<a href="#" target="_blank" class="mnav c-font-normal c-color-t">貼吧</a>
使用?find_element_by_link_text
?并指明標簽內(nèi)全部文本即可定位。
driver.find_element_by_link_text("貼吧")
xpath?定位
xpath
?是一種在?XML
?文檔中定位元素的語言,它擁有多種定位方式,下面通過實例我們看一下它的幾種使用方式。
<html>
<head>...<head/>
<body>
<div id="aa">
<div class="bb">
<div class="cc">
<div class="dd">...</div>
<div class="ff">
<div class="ee">
<div class="hh">
<input id="ww" autocomplete="off" type="text" value="" placeholder="自動化測試">
根據(jù)上面的標簽需要定位 最后一行?input
?標簽,以下列出四種方式,xpath
?定位的方式多樣并不唯一,使用時根據(jù)情況進行解析
# 絕對路徑(層級關(guān)系)定位
driver.find_element_by_xpath("/html/body/div/div/div/div[2]/div/div/input[1]")
# 利用元素屬性定位
driver.find_element_by_xpath("http://*[@id='ww']"))
# 層級+元素屬性定位
driver.find_element_by_xpath("http://div[@id='aa']/div/div/div[2]/div/div/input[1]")
# 邏輯運算符定位
driver.find_element_by_xpath("http://*[@id='ww' and @autocomplete='off']")
css 定位
CSS
?使用選擇器來為頁面元素綁定屬性,它可以較為靈活的選擇控件的任意屬性,一般定位速度比?xpath
?要快,但使用起來略有難度。
舉個簡單的例子,同樣定位上面實例中的?input
?標簽
# 選擇 id = 'aa' 的元素
driver.find_element_by_css_selector('#aa')
# 選擇div class='hh'下面的input元素
driver.find_element_by_css_selector('div[class="hh"]>input')
注意:以上定位元素的方式是本人常用的,還有一些其他方式可上網(wǎng)查找。
5、瀏覽器控制
修改瀏覽器大小
webdriver
?提供方法來修改瀏覽器窗口的大小。
from selenium import webdriver
# 設(shè)置瀏覽器瀏覽器的寬高為:600x800
driver.set_window_size(600, 800)
#全屏
driver.maximize_window()
瀏覽器前進、后退、刷新
from selenium import webdriver
#返回(后退)
driver.back()
#前進
driver.forward()
#刷新
driver.refresh()
關(guān)閉瀏覽器
# 關(guān)閉當(dāng)前窗口
driver.close()
# 退出瀏覽器
driver.quit()
6、常見操作
webdriver中的常見操作有:
方法 | 描述 |
send_keys() | 模擬輸入指定內(nèi)容 |
clear() | 清除文本內(nèi)容 |
is_displayed() | 判斷該元素是否可見 |
get_attribute() | 獲取標簽屬性值 |
size | 返回元素的尺寸 |
text | 返回元素文本 |
接下來還是用 百度 首頁為例,需要用到的就是搜素框和搜索按鈕。通過下面的例子就可以了解各個操作的用法了。
# 定位搜索輸入框
text_label = driver.find_element_by_xpath('//*[@id="kw"]')
# 在搜索框中輸入 自動化測試
text_label.send_keys('自動化測試')
# 清除搜索框中的內(nèi)容
text_label.clear()
# 輸出搜索框元素是否可見
print(text_label.is_displayed())
# 輸出placeholder的值
print(text_label.get_attribute('placeholder'))
# 定位搜索按鈕
button = driver.find_element_by_xpath('//*[@id="su"]')
# 輸出按鈕的大小
print(button.size)
# 輸出按鈕上的文本
print(button.text)
7、鼠標事件
在webdriver 中,鼠標操作都封裝在ActionChains類中,常見方法如下:
from selenium.webdriver.common.action_chains import ActionChains
#單擊左鍵
# 定位搜索按鈕
text_label = driver.find_element_by_xpath('//*[@id="kw"]')
# 單擊左鍵
text_label.click()
#單擊右鍵,鼠標右擊的操作與左擊有很大不同,需要使用 ActionChains
# 定位搜索按鈕
button = driver.find_element_by_xpath('//*[@id="kw"]')
# 右鍵搜索按鈕,perform用于執(zhí)行ActionChains中的操作
ActionChains(driver).context_click(button).perform()
# 雙擊
# 定位搜索按鈕
button = driver.find_element_by_xpath('//*[@id="kw"]')
# 執(zhí)行雙擊動作
ActionChains(driver).double_click(button).perform()
# 鼠標懸停
# 定位百度設(shè)置
collect = driver.find_element_by_xpath('//*[@id="s-usersetting-top"]')
# 懸停至設(shè)置標簽處
ActionChains(driver).move_to_element(collect).perform()
8、鍵盤操作
webdriver
?中?Keys
?類幾乎提供了鍵盤上的所有按鍵方法,我們可以使用?send_keys + Keys
?實現(xiàn)輸出鍵盤上的組合按鍵如?“Ctrl + C”、“Ctrl + V”?等。
from selenium.webdriver.common.keys import Keys
# 定位輸入框并輸入文本
driver.find_element_by_id('xxx').send_keys('Dream丶killer')
# 模擬回車鍵進行跳轉(zhuǎn)(輸入內(nèi)容后)
driver.find_element_by_id('xxx').send_keys(Keys.ENTER)
# 使用 Backspace 來刪除一個字符
driver.find_element_by_id('xxx').send_keys(Keys.BACK_SPACE)
# Ctrl + A 全選輸入框中內(nèi)容
driver.find_element_by_id('xxx').send_keys(Keys.CONTROL, 'a')
# Ctrl + C 復(fù)制輸入框中內(nèi)容
driver.find_element_by_id('xxx').send_keys(Keys.CONTROL, 'c')
# Ctrl + V 粘貼輸入框中內(nèi)容
driver.find_element_by_id('xxx').send_keys(Keys.CONTROL, 'v')
9、元素等待
顯示等待:
設(shè)置一個超時時間,每個一段時間就去檢測一次該元素是否存在,如果存在則執(zhí)行后續(xù)內(nèi)容,如果超過最大時間(超時時間)則拋出超時異常(TimeoutException
)
from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver
from time import time
# 定位元素
ele = driver.find_element_by_id('xxx')
# 設(shè)置顯示等待,每0.5秒查找一次元素,超過10秒找不到元素則拋出異常
WebDriverWait(driver, 10, 0.5).until(lambda x: x.find_element(ele),message='找不到該元素')
隱式等待
隱式等待也是指定一個超時時間,如果超出這個時間指定元素還沒有被加載出來,就會拋出?NoSuchElementException
?異常。
from selenium import webdriver
from time import time
# 設(shè)置隱式等待時間為5秒
driver.implicitly_wait(5)
try:
driver.find_element_by_id('kw')
except Exception as e:
print(e)
# 代碼運行到 driver.find_element_by_id('kw') 這句之后觸發(fā)隱式等待,在輪詢檢查 5s 后仍然沒有定位到元素,拋出異常
強制等待
使用?time.sleep()
?強制等待,設(shè)置固定的休眠時間,無論元素有沒有加載出來都會等設(shè)置的時間結(jié)束后執(zhí)行下一步。
from selenium import webdriver
from time import sleep
# 點擊id為‘kw’的元素
driver.find_element_by_id('kw').click()
# 等待5秒再執(zhí)行下一步
sleep(5)
10、窗口切換
在?selenium
?操作頁面的時候,可能會因為點擊某個鏈接而跳轉(zhuǎn)到一個新的頁面(打開了一個新標簽頁),這時候?selenium
?實際還是處于上一個頁面的,需要我們進行切換才能夠定位最新頁面上的元素。
窗口切換需要使用?switch_to.windows()
?方法。
from selenium import webdriver
from time import sleep
# 假設(shè)點擊這個元素在新標簽打開了網(wǎng)頁
driver.find_element_by_id('kw').click()
# 獲取當(dāng)前窗口的句柄
ser_1 = driver.window_handles
# 切換到第二個窗口,[0]是當(dāng)前窗口,[1]是新打開的窗口
driver.switch_to.window(ser_1[1])
# 切換后就可以定位到新窗口的元素并執(zhí)行操作
三、使用pycharm編寫自動化測試腳本
1、配置解釋器
? ? ? ??
?
?中文插件安裝:設(shè)置>plugins>在搜索框輸入chinese
2、創(chuàng)建項目
點擊文件>新建項目
?3、開始寫腳本
新建一個python文件
將上面所講的基本操作添加進來就可以了?
以上就是本人常用的基本操作,如果在項目中遇到需要其他操作的可以留言或者百度。
???????文章來源:http://www.zghlxwxcb.cn/news/detail-423833.html
下一章節(jié)內(nèi)容:pytest單元測試框架文章來源地址http://www.zghlxwxcb.cn/news/detail-423833.html
到了這里,關(guān)于Python + Selenium自動化測試的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!