Web 自動化

自動化:由機器設備代替人爲自動完成指定目標的過程css

自動化測試:由程序代替人爲去驗證程序功能的過程html

爲何要進行自動化測試?linux

  1. 解決-迴歸測試web

  2. 壓力測試編程

  3. 兼容性測試數組

  4. 提升測試效率,保證產品質量瀏覽器

什麼階段開始自動化測試?併發

功能測試完畢(手工測試)app

手工測試:就是由人去一個個輸入測試用例,而後觀察結果;框架

自動化測試所屬分類(代碼可見度)

  1. 黑盒測試

  2. 灰盒測試

  3. 白盒測試

提示: Web 自動化測試屬於黑盒測試(功能測試)

優勢:

  1. 較少時間內運行更多的測試用例

  2. 自動化腳本可重複運行

  3. 減小人爲的錯誤

  4. 測試數據存儲

缺點:

  1. 不能取代手工測試

  2. 手工測試比自動化測試發現的缺陷更多

  3. 測試人員技能要求

3. 自動化測試分類

  1. Web(UI)自動化測試

  2. 接口-自動化測試

  3. 移動(app)-自動化測試

  4. 單元測試-自動化測試

什麼Web 項目適合作自動化測試?

  1. 需求變更不頻繁

  2. 項目週期長

  3. 項目須要迴歸測試

如何進行 Web 自動化測試?

  1. QTP(收費)

  2. Selenium (開源)

  3. Jmeter(開源,Web,接口,性能)

  4. LoadRunner(收費.Web,性能)

  5. Robot framework 基於Python 可擴展的( 關鍵字驅動) 自動化測試框架

主流工具-匯結:

Web 自動化測試:selenium,robot framework

App端:Appium MonkeyRunner,UIautomation

PC(win32):QTP

接口:Jemeter,Postman,HttpUnit,RESTClient

雲平臺:Testin Testbird

性能測試: Jemeter,LoadRunner

Selenium 特色

  1. 開源

  2. 跨屏圖

  3. 多個瀏覽器測試

  4. 多語言

  5. 成熟穩定 google 百度 騰訊 都在用

  6. 功能強大

Selenium 家族

Selenium Grid 分佈式測試,超大規模測試

重點:

  1. Selenium IDE

  2. Selenium2.0(WebDriver)

 

Selenium IDE 安裝與運行

Selenium IDE :是一個 Firefox 插件,用於記錄和播放用戶與瀏覽器的交互.(錄製 Web 操做腳本)

爲社麼要學習?

安裝地址:

Version: 2.9.1.1

https://addons.mozilla.org/en-GB/firefox/addon/selenium-ide/versions/

火狐瀏覽器地址:

下載地址:

運行: Ctrl+Alt+S

35 版本兼容性最好

定位調試軟件

FireBug 重要

FireBug 差價事火狐一款插件,可以調試全部網站語言,同時也能夠快速定位HTML 頁面中的元素;

做用:定位元素

Selenium IDE 提示

錄製腳本時候是錄製鼠標和鍵盤的全部再瀏覽器操做,那麼腳本會出現多餘的步驟,有時候咱們須要手動填寫腳本或修改腳本,全部咱們有必要對Selenium IDE 腳本編輯與操做有所瞭解;

Selenium IDE 腳本編輯與操做【瞭解】

目的:手動修改或編寫腳本(採用錄製方式很容易記錄出多餘的操做)

單機click 是沒有值

編輯一行命令
插入一行命令

右鍵鼠標 「insert new command」 插入一條新的命令

插入註釋

右鍵「insert new comment」 插入註釋,紫色字體

命令執行

選定要執行的命令點擊單個執行按鈕便可,注意:有一些命令必須依賴於前面命令的運行結果才能成功執行,不然會致使執行失敗

4. Selenium IDE 經常使用命令[瞭解]

4.1 open(url)命令

做用:打開指定的URL ,URL 能夠爲相對或是絕對URL

Target:要打開的URL;value 值爲空

  1. 當Target 爲空,將打開Base URL 中填寫的頁面

  2. 當Target 不爲空且值爲相對路徑,將打開Base URL +Target 頁面.如,假設 Base URL 爲 http://www.zhi97.com, 而Taget爲/about.aspx,則執行open命令時,將打開http://www.zhi97.com/about.aspx

  3. 當Target以http://卡頭是,將忽略Base URL,直接打開Target的網址;

4.2 pause(waitTime)

做用:暫停腳本運行

waitTime:等待時間,單位爲ms;//Target=1000

4.3 goBack()

做用:模擬單機瀏覽器的後退按鈕;

提示:因爲沒有參數,因此Target和Value可不填

4.4 refresh()

做用:刷新當前頁;

提示:因爲沒有參數,因此Target和Value可不填;

4.5 click(locator)

做用:單擊一個連接,按鈕,複選框或單選按鈕;

提示:若是該單擊事件致使新的頁面加載,命令將會加上後綴"AndWait",即"clickAndWait",或"waitForPageToLoad"

4.6 type(locator,value)

做用:向指定輸入域中輸入指定值;也可爲下拉框,複選框和單選框按鈕賦值

Target:元素的定位表達式;

Value:要輸入的值;

4.7 close()

做用:模擬用戶單擊窗口上的關閉按鈕

提示:因爲沒有參數,因此Target和Value可不填

#### 回顧 Selenium 家族

須要關注的

1.Selenium2.0(WebDeiver)

提示:

  1. Selenium2.0=Selenium1.0+WebDriver

  2. Selenium1.0 和WebDeiver 原屬於兩個不一樣的東西,因爲某種緣由已合併

  3. Selenium2.0之後咱們簡稱WebDriver

WebDriver(Selenium2.0)

什麼是WebDriver

  1. WebDriver 是一種用於web應用程序的自動測試工具;

  2. 它提供了一套友好的API

  3. WebDriver 徹底就是一套類庫,不依賴任何測試框架,除了必要的瀏覽器驅動

說明:

API:應用編程接口說明(WebDriver類庫內封裝很是多的方法,要使用這些方法,舊須要友好的調用命名規則)

支持的瀏覽器
  1. Firefox(FirefoxDriver) 推薦

  2. IE(InternetExplorerDriver)

  3. Opera(OperaDriver)

  4. Chrome(ChromeDriver)

  5. safari(SafariDriver)

  6. HtmlUnit(HtmlUnit Driver)

Firefox,Chrome:對元素定位和操做有良好的支持,同時對JavaScript支持也很是好.

IE:只能再Windows平臺運行,全部瀏覽器中運行速度最慢

HtmlUnit:無GUI(界面),運行速度最快

推薦緣由

  1. Selenium IDE

  2. FireBug

  3. 對WebDriver API 支持良好

爲何要學習 WebDriver ?
  1. 自動化測試概念

  2. WebDriver-定位元素

  3. WebDriver-操做元素

4. 環境搭建

4.1 Selenium 安裝,卸載,查看命令

安裝: pip install selenium == 2.48.0

  1. 通用的Python包管理工具.提供了對Python包的查找下載,安裝,卸載的功能

  2. install: 安裝命令

  3. elenium==2.48.0:指定安裝selenium2.48.0 版本(若是不指定版本默認爲最新版本)

卸載:pip uninstall selenium

查看:pip show selenium

4.2 火狐瀏覽器 推薦
  1. FireFox 48 以上版本

    Selenium3.X+ FireFix 驅動-geckodriver

  2. Firefox 48 如下版本

    Selenium2.X 內置驅動

谷歌瀏覽器

Selenium2.x/3.x+Chrome 驅動

每一個瀏覽的驅動版和其餘瀏覽器的不一致

但要與對應的一致

4.5 瀏覽器-總結

各個驅動下載地址:http://www.seleniumhq.org/download/

  1. 瀏覽器的版本和驅動版本要一致

(若是是32bit瀏覽器而Driver 是64bit則會致使腳本運行失敗)

  1. 瀏覽器驅動下載好後須要添加Path 環境變量中,或者直接放到Python 安裝目錄,由於Python以添加到Path 中

  2. 推薦使用火狐瀏覽器(24,35)版本

WebDriver-元素定位

目標瞭解元素各類定位方法

掌握 id,name,class_name,tag_name,link_text,partial_link_text 定位的使用

爲何要學習元素定位方式

  1. 讓程序操做指定元素,舊必須先找到此元素

  2. 程序不像人類用眼睛直接定位到元素

  3. WebDriver 提供了八種定位元素方式

定位方式
  1. id

  2. name

  3. class_name

  4. tag_name

  5. link_text

  6. partial_link_text

  7. Xpath

  8. css

定位方式分類-彙總

  1. id,name,class_name:元素屬性定位

  2. tag_name:元素標籤名稱

  3. link_text,partial_link_text:超連接定位(a標籤)

  4. Xpath:元素路徑定位

  5. css:css選擇器定位

id 定位方法 find_element_by_id()

id 定位實現 步驟分析

  1. 導入selenium 包->from selenium import webdriver

  2. 導入time 包->from time import sleep

  3. 實例化火狐瀏覽器->driver=webdriver.Firefox()

  4. 打開註冊A.html->driver.get(url)

  5. 調用id 定位方法->driver.find_element_by_id("")

  6. 使用send_keys()方法發送數據-<.send_keys("admin")

  7. 暫停3秒->sleep(3)

  8. 關閉瀏覽器->quit()

說明:爲了接下來更好而學習體驗,咱們先暫時使用send_keys()和quit()方法.再2.4節元素操做詳解

# ctrl+alt+空格快速導包
name 定位

driver.find_element_by_name(名稱).send_key(賦值)

class 定位

driver.find_element_by_class_name()

說明:HTML 規定了class 來指定元素的類名,用法和name,id 相似

前提:元素有class 屬性

經過class_name定位電話號碼A,併發送1861111111

tag_name 定位

說明:HTML本質就是由不一樣的tag(標籤)組成,而每一個tage 都是指同一類,因此tag 定位效率低.通常不建議使用;tag_name 定位就是經過標籤名來定位

  1. find_element_by_tag_name()

    返回:符合條件的第一個標籤

  2. 如何獲取第二個元素?稍後(2.8節)講解

2.5 link_text 定位

說明:link_text定位於前面4個定位有所不一樣,它專門用來定位超連接文本(<a"> 標籤 </a">)

方法:find_element_by_link_text()

說明:須要傳入a 標籤所有文本

  1. 參考id定位

  2. 點擊->click()

2.6 partical_link_text 定位

說明:partial_link_text 定位是對 link_text 定位的補充,partial_like_text 爲模糊匹配; link_text所有匹配

2.7 find_element[s]_by_XXX()

做用:

  1. 查找定位全部符合條件的元素

  2. 返回的定位元素格式爲數組(列表)格式

說明:

  1. 列表數據格式的讀取須要指定下標(下標從0開始)

操做(2.4 tag_name)

說明:使用tag_name 獲取第二個元素(密碼框)

代碼: driver.find_elements_by_tag_name("input")[1].send_keys("123456")

什麼是 Xpath?

  1. Xpath 即爲XML Path 的簡稱,它是一種用來肯定XML文檔中某部分位置的語言.

  2. HTML 能夠看作是 XML 的一種實現,因此 Selenium 用戶可使用這種強大的語言在Web 應用中定位元素.

XML: 一種標記語言,用於數據的存儲和傳遞.後綴.xml

提示:Xpath 爲強大的語言,那是由於它有很是靈活定位策略;

思考

Xpath 有哪些策略呢?

2.Xpath 定位策略(方式)

  1. 路徑-定位

    1. 絕對路徑

    2. 相對路徑

  2. 利用元素屬性-定位

  3. 層級於屬性結合-定位

  4. 屬性於邏輯結合-定位

Xpath 定位 方法

driver.find_element_by_xpath()

2.1 路徑/絕對路徑.相對路徑

1. 絕對路徑:從最外層元素到指定元素之間全部通過元素層級路徑;如:/html/body/div/p[2]
  提示:
  1.1. 絕對路徑以/開始
  1.2. 使用Firebug能夠快速生成,元素Xpath絕對路徑
2. 相對路徑: 從第一個符合條件元素開始(通常配合屬性來區分);
  2.1. 相對路徑以//開始,後邊必須跟標籤名稱或*
  2.2. 使用FireBug擴展插件FirePath 可快速生成,元素相對路徑
3.Xpath 路徑內使用屬性時,必需要使用@修飾

提示:爲了方便練習Xpath,能夠在FireBug內安裝擴展插件-FireFinder 插件;

3. 火狐瀏覽器->組件管理器->搜索FireFinder

2.2 利用元素屬性

說明:快速定位元素,利用元素惟一屬性;

示例://*[@id='userA']

2.3 層級於屬性結合

說明:要找的元素,沒有屬性,但它的父級有

示例://*[@id='p1']/input

2.4 屬性與邏輯結合

說明:解決元素之間個數相同屬性重名問題

示例://*[@id='telA' and @class='telA']

2.5 Xpath-延伸

//*[text()='xxx']  #文本內容是xxx的元素
//*[starts-with(@attribute,'xxx')] #屬性以xxx開頭的元素
//*[contains(@attribute,'xxx')] #屬性中含有xxx的元素

 

FireFox 舊版本下載地址:

https://ftp.mozilla.org/pub/firefox/releases/

 

CSS 定位

3.1 什麼是 CSS

  1. CSS(Cascading Style Sheets)是一種語言,它用來描述HTML 和XML 的元素顯示樣式;

    css語言書寫兩個格式:

    卸載HTML語言中.卸載單獨文件中 後綴.css

  2. 而在CSS語言中有CSS選擇器(不一樣的策略選擇元素),在Selenium 中也可使用這種選擇器;

    提示:

    • 在selenium 中極力推薦CSS 定位,由於它比XPath 定位速度要快

    • CSS 選擇器語法很是強大,在這裏咱們只學習在測試中經常使用的幾個

CSS定位方法

driver.find_element_by_css_selector()

CSS 定位經常使用策略(方式)

  1. id選擇器

  2. class選擇器

  3. 元素選擇器

  4. 屬性選擇器

  5. 層級選擇器

id選擇器

說明:根據元素id 屬性來選擇

格式:#id 如: #userA<選擇id屬性值爲userA的全部元素>
class選擇器

根據元素class屬性來選擇

格式:
.class 如: .telA <選擇class屬性值爲telA的全部元素>
元素選擇器

根據元素的標籤名選擇

格式:
element 如:input<選擇全部input元素>
屬性選擇器

根據元素的屬性名和值來選擇

格式:
[attribute=value]如:[type='password']<選擇全部type屬性值爲password的值>
層級選擇器

根據元素的父子關係來選擇

格式:
element>element 如:p>input   .返回全部p元素下全部的input元素
提示:
">" 能夠用空格代替 如:p input 或者 p [type='password']
CSS 延伸
1.input[type^='p']  type屬性以p字母開頭的元素
2.input[type$='d'] type屬性以d字母結束的元素
3.input[type*='w'] type屬性包含w字母的元素

Xpath 和 CSS 相似功能對比

定位(另外一種寫法)-延伸 [瞭解]

說明:調用find_element()方法,經過By來聲明定位的方法,而且傳入對應的方法和參數(瞭解)

導入By類

導包:from selenium.webdriver.common.by import By

driver.find_element(By.XPATH,...)

原find的底層

相關文章
相關標籤/搜索