第一章 自動化測試課程介紹和課程大綱php
一、自動化測試課程介紹css
簡介:講解什麼是自動化測試和課程大綱講解,課程須要的基礎和學後的水平html
python3.7+selenium3前端
pycharmjava
第二章自動化測試相關軟件安裝python
一、自動測試工具selenium介紹linux
簡介:介紹selenium自動化測試工具git
爲何用selenium工具 1 -> 2 -> 3github
一、主流,各大公司都有用,開源免費社區活躍web
二、支持主流瀏覽器 火狐FireFox、谷歌chrome、IE(不建議)
三、支持多個語言,如python、java,js、php等
四、跨平臺:mac、windows、linux等 64位系統
二、自動化測試環境搭建之python3安裝
簡介:使用windwos安裝python3
一、python3安裝
1)官方文檔安裝 下載解壓包
https://www.python.org/downloads/windows/
2)python環境變量安裝
3)pip工具介紹
包管理工具
三、自動化測試環境搭建之selenium3安裝
簡介:使用安裝包安裝selenium3
方法1:cmd環境下,用pip install selenium
方法2:下載selenium安裝包手動安裝 (推薦)
下載地址:https://pypi.org/project/selenium/
在解壓好的目錄下進行安裝 python setup.py install
四、自動化測試工具selenium驗證安裝
簡介:講解自動化測試工具selenium安裝準確性
下載火狐瀏覽器
一、使用selenium打開firefox瀏覽器
須要下載對應的驅動
火狐:https://github.com/mozilla/geckodriver/releases
下載driver、拷貝到瀏覽器安裝路徑、配置環境變量
配置環境變量,須要重啓cmd窗口
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
五、前端知識講解和工具安裝使用
簡介:講解前端基礎知識和推薦安裝的工具
sublime / cmder / chrome瀏覽器 / firefox瀏覽器
必需要了解的前端基礎知識:
html: 網頁基礎,用於顯示數據
js: 網頁腳本,控制頁面的數據
css: 用於控制文件樣式
xml: 用來傳輸和存儲數據
json: 用來傳輸和存儲數據
http: 網絡請求協議
xpath:
第三章 測試核心理論知識-(工做面試必備)
一、必備知識之軟件開發生命週期
簡介:講解軟件開發的生命週期
一、測試人員須要全程參與
需求調研-》需求分析評審-》軟件架構設計-》編碼-》單元測試-》集成測試-》系統測試-》預發佈系統測試-》上線
測試人員要求開發人員寫單元測試
把控時間點、風險點
接口文檔不完善(更新了需求功能,不及時更新接口文檔)
二、測試相關知識分類講解
簡介: 測試分類講解
黑盒測試(功能測試):功能符合用戶的需求:
白盒測試:知道里面的邏輯,驗證符合用戶的需求
冒煙測試:主功能、主路徑測試
自動化測試: 人工測試轉爲工具自動執行(沒有誰取代誰,有些場景適合自動化測試,有些場景適合手工測試)
性能測試:模擬多種峯值和負載去測試各項性能指標 jmeter、loadrunner
三、自動化測試和手工測試優缺點
簡介:介紹何時須要用到自動化測試和何時用手工測試
一、自動化測試方便,自動驗證功能是否有問題
二、更好的利用自有,節約人力成本
三、覆蓋更全,增長軟件的穩定性
場景:
軟件需求變動少,項目週期長,穩定性要強,環境要隔離獨立(開發一套環境、測試一套環境)
若是整個系統需求變動多,只能抽取部分功能作自動化測試
語言選擇:
python java ruby php
打造本身的惟一性
第四章 自動測試selenium精講實戰
一、selenium基礎實戰之定位網頁元素技巧上集
簡介:講解使用selenium定位網頁元素,
find_element_by_id,find_element_by_name,find_element_by_class_name
一、開啓瀏覽器
browser = webdriver.Firefox();
二、打開網頁
browser.get("http://baidu.com")
使用python判斷是否正確
browser.title 或者 browser.current_url
三、定位元素的8種方法,(!!!!必定要惟一)
id: find_element_by_id() 採用id屬性進行定位
name: find_element_by_name() 定位方式和id定位類似,id、name和class通常在網頁都至少會有其中的一種
class name: find_element_by_class_name() 定位方式和id定位類似,id、name和class通常在網頁都至少會有其中的一種
四、定位到元素後的方法
clear() //清空
send_keys() // 輸入
back() //後退頁面
maximize_window() // 最大化窗口
click() //點擊事件,點擊按鈕,超連接
submit() //提交表單
五、定位到元素後的屬性
tag_name //標籤名
text //文本內容
二、selenium基礎實戰之定位網頁元素技巧下集
簡介:講解使用selenium定位網頁元素,
一、tag name:find_element_by_tag_name() 經過標籤名去定位,用的少,如find_element_by_tag_name("div")
二、link text: find_element_by_link_text() 超連接內容定位,元素內容
如 <a href="#">xxx </a>,則find_element_by_link_text("xxx")
from time import sleep
sleep(5)
三、partial link text:find_element_by_partial_link_text() 超連接內容定位,模糊匹配,和上面相似
比較難下面的兩種,下節課講解
xpath:
css selector
三、selenium實戰定位網頁元素之CSS定位
簡介:講解使用css定位網頁元素
一、css selector:find_element_by_css_selector()
根據CSS屬性定位,通常class是用.標記,id是用#標記,定位方式也會比xpath快
如 find_element_by_css_selector('input[id=\'search\']') // 規則: 元素[屬性=值]
技巧:經過firebug的拷貝css路徑
路徑:審查元素-》右鍵-》複製-》css選擇器
四、selenium實戰定位網頁元素之xpath定位
簡介:講解使用xpath定位網頁元素
一、xpath語法:http://www.w3school.com.cn/xpath/xpath_syntax.asp
注意 : 」//「 是所有的意思,即全文掃描, 」/「 的相鄰的意思, *是全部元素, 」..「是元素的父節點, "."是當前節點
二、xpath :find_element_by_xpath()xpath是XML路徑語言,經過元素的路徑來完成對元素的查找,HTML就是XML的一種實現方式,在FriePath插件裏copy對應的xpath地址
絕對路徑定位:從<html>標籤開始依次往下進行查找
相對路徑:利用元素屬性來進行xpath定位
技巧:經過firebug的拷貝css路徑
8種選擇器注意問題:若是定位元素報錯,緣由以下
一、根據定位取不到
二、多個元素根據下標超出範圍,沒有0,從1開始
解決辦法:換其餘方式定位元素
第五章 selenium實戰之模擬事件處理
一、自動化測試實戰之ActionChains模擬用戶行爲
簡介:講解使用selenium裏面的ActionChains模擬用戶的行爲
需求:
須要模擬鼠標操做才能進行的狀況,好比單擊、雙擊、點擊鼠標右鍵、拖拽
解決:selenium提供了一個類來處理這類事件
selenium.webdriver.common.action_chains.ActionChains(driver)
腳本:
from selenium.webdriver.common.action_chains import ActionChains
執行原理:
調用ActionChains的方法時不會當即執行,會將全部的操做按順序存放在一個隊列裏,當調用perform()方法時,隊列中的事件會依次執行
支持鏈式寫法或者分步寫法
ActionChains(driver).click(ele).perform()
鼠標和鍵盤方法列表:
perform() 執行鏈中的全部動做
click(on_element=None) 單擊鼠標左鍵
context_click(on_element=None) 點擊鼠標右鍵
double_click(on_element=None) 雙擊鼠標左鍵
move_to_element(to_element) 鼠標移動到某個元素
ele.send_keys(keys_to_send) 發送某個詞到當前焦點的元素
========== 不經常使用 ==========
click_and_hold(on_element=None) 點擊鼠標左鍵,不鬆開
release(on_element=None) 在某個元素位置鬆開鼠標左鍵
key_down(value, element=None) 按下某個鍵盤上的鍵
key_up(value, element=None) 鬆開某個鍵
drag_and_drop(source, target) 拖拽到某個元素而後鬆開
drag_and_drop_by_offset(source, xoffset, yoffset) 拖拽到某個座標而後鬆開
move_by_offset(xoffset, yoffset) 鼠標從當前位置移動到某個座標
move_to_element_with_offset(to_element, xoffset, yoffset) 移動到距某個元素(左上角座標)多少距離的位置
send_keys_to_element(element, keys_to_send) 發送某個鍵到指定元素
二、鼠標事件實戰之hover菜單欄彈出
簡介:鼠標事件之菜單欄hover彈出
一、
#引入 ActionChains 類
from selenium.webdriver.common.action_chains import ActionChains
二、move_to_element(to_element) 鼠標移動到某個元素
#對定位到的元素執行鼠標移動到上面的操做
ActionChains(driver).move_to_element(ele1).perform()
三、多知識點綜合實戰之模擬用戶登陸
簡介:講解使用selenium模擬登陸小D課堂,並選擇課程
一、多知識點實戰
二、查找登陸框-》輸入用戶名和密碼-》觸發登陸-》判斷登陸是否成功-》打印結果
四、自動化測試實戰之網頁等待時間
簡介:講解自動化測試的等待時間
一、爲何須要等待時間--》等系統穩定
網頁須要加載對應的資源文件,頁面渲染,窗口處理等等
二、自動化測試經常使用的等待時間
強制等待 : (本身調試代碼看效果)
from time import sleep
sleep(5) # 強制等待5秒再執行下一步,缺點是無論資源是否是完成,都必須等待
隱性等待:
driver.implicitly_wait(10) # 隱性等待,最長等10秒
#設置了一個最長等待時間,若是在規定時間內網頁加載完成,則執行下一步,不然一直等到時間截止,而後執行下一步,弊端就是程序會一直等待整個頁面加載完成,到瀏覽器標籤欄那個加載圈再也不轉
注意:對driver起做用,因此只要設置一次便可,沒有必要處處設置
顯性等待:
WebDriverWait 須要配合 until和until_not,程序每隔N秒檢查一次,若是成功,則執行下一步,不然繼續等待,直到超過設置的最長時間
from selenium.webdriver.support.wait import WebDriverWait
語法:WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
結論: 隱性等待和顯性等待能夠同時用,等待的最長時間取二者之中的較大者
更多課程資料能夠查看https://xdclass.net/#/coursecatalogue?video_id=16
零基礎講解自動化測試,Selenium安裝到八種元素定位,用戶事件處理,等待時間處理,
到單元測試框架Unites整合實戰,整合自動化測試實戰等核心知識點。
贈送大量的學習資料以及乾貨