python selenium自动化面试_18年selenium3+python3+unittest自动化测试教程(上)
第一章 自動(dòng)化測(cè)試課程介紹和課程大綱
1、自動(dòng)化測(cè)試課程介紹
簡(jiǎn)介:講解什么是自動(dòng)化測(cè)試和課程大綱講解,課程需要的基礎(chǔ)和學(xué)后的水平
python3.7+selenium3
pycharm
第二章自動(dòng)化測(cè)試相關(guān)軟件安裝
1、自動(dòng)測(cè)試工具selenium介紹
簡(jiǎn)介:介紹selenium自動(dòng)化測(cè)試工具
為什么用selenium工具 1 -> 2 -> 3
1、主流,各大公司都有用,開源免費(fèi)社區(qū)活躍
2、支持主流瀏覽器 火狐FireFox、谷歌chrome、IE(不建議)
3、支持多個(gè)語(yǔ)言,如python、java,js、php等
4、跨平臺(tái):mac、windows、linux等? 64位系統(tǒng)
2、自動(dòng)化測(cè)試環(huán)境搭建之python3安裝
簡(jiǎn)介:使用windwos安裝python3
1、python3安裝
1)官方文檔安裝 下載解壓包
https://www.python.org/downloads/windows/
2)python環(huán)境變量安裝
3)pip工具介紹
包管理工具
3、自動(dòng)化測(cè)試環(huán)境搭建之selenium3安裝
簡(jiǎn)介:使用安裝包安裝selenium3
方法1:cmd環(huán)境下,用pip install selenium
方法2:下載selenium安裝包手動(dòng)安裝 (推薦)
下載地址:https://pypi.org/project/selenium/
在解壓好的目錄下進(jìn)行安裝? python setup.py install
4、自動(dòng)化測(cè)試工具selenium驗(yàn)證安裝
簡(jiǎn)介:講解自動(dòng)化測(cè)試工具selenium安裝準(zhǔn)確性
下載火狐瀏覽器
1、使用selenium打開firefox瀏覽器
需要下載對(duì)應(yīng)的驅(qū)動(dòng)
火狐:https://github.com/mozilla/geckodriver/releases
下載driver、拷貝到瀏覽器安裝路徑、配置環(huán)境變量
配置環(huán)境變量,需要重啟cmd窗口
from selenium import webdriver
driver = webdriver.Firefox()
5、前端知識(shí)講解和工具安裝使用
簡(jiǎn)介:講解前端基礎(chǔ)知識(shí)和推薦安裝的工具
sublime? / cmder? /? ?chrome瀏覽器? /? firefox瀏覽器
必須要了解的前端基礎(chǔ)知識(shí):
html: 網(wǎng)頁(yè)基礎(chǔ),用于顯示數(shù)據(jù)
js: 網(wǎng)頁(yè)腳本,控制頁(yè)面的數(shù)據(jù)
css: 用于控制文件樣式
xml: 用來(lái)傳輸和存儲(chǔ)數(shù)據(jù)
json: 用來(lái)傳輸和存儲(chǔ)數(shù)據(jù)
http: 網(wǎng)絡(luò)請(qǐng)求協(xié)議
xpath:
第三章 測(cè)試核心理論知識(shí)-(工作面試必備)
1、必備知識(shí)之軟件開發(fā)生命周期
簡(jiǎn)介:講解軟件開發(fā)的生命周期
1、測(cè)試人員需要全程參與
需求調(diào)研-》需求分析評(píng)審-》軟件架構(gòu)設(shè)計(jì)-》編碼-》單元測(cè)試-》集成測(cè)試-》系統(tǒng)測(cè)試-》預(yù)發(fā)布系統(tǒng)測(cè)試-》上線
測(cè)試人員要求開發(fā)人員寫單元測(cè)試
把控時(shí)間點(diǎn)、風(fēng)險(xiǎn)點(diǎn)
接口文檔不完善(更新了需求功能,不及時(shí)更新接口文檔)
2、測(cè)試相關(guān)知識(shí)分類講解
簡(jiǎn)介: 測(cè)試分類講解
黑盒測(cè)試(功能測(cè)試):功能符合用戶的需求:
白盒測(cè)試:知道里面的邏輯,驗(yàn)證符合用戶的需求
冒煙測(cè)試:主功能、主路徑測(cè)試
自動(dòng)化測(cè)試: 人工測(cè)試轉(zhuǎn)為工具自動(dòng)執(zhí)行(沒(méi)有誰(shuí)取代誰(shuí),有些場(chǎng)景適合自動(dòng)化測(cè)試,有些場(chǎng)景適合手工測(cè)試)
性能測(cè)試:模擬多種峰值和負(fù)載去測(cè)試各項(xiàng)性能指標(biāo) jmeter、loadrunner
3、自動(dòng)化測(cè)試和手工測(cè)試優(yōu)缺點(diǎn)
簡(jiǎn)介:介紹什么時(shí)候需要用到自動(dòng)化測(cè)試和什么時(shí)候用手工測(cè)試
1、自動(dòng)化測(cè)試方便,自動(dòng)驗(yàn)證功能是否有問(wèn)題
2、更好的利用自有,節(jié)約人力成本
3、覆蓋更全,增加軟件的穩(wěn)定性
場(chǎng)景:
軟件需求變更少,項(xiàng)目周期長(zhǎng),穩(wěn)定性要強(qiáng),環(huán)境要隔離獨(dú)立(開發(fā)一套環(huán)境、測(cè)試一套環(huán)境)
如果整個(gè)系統(tǒng)需求變更多,只能抽取部分功能做自動(dòng)化測(cè)試
語(yǔ)言選擇:
python? java? ?ruby? php
打造自己的唯一性
第四章 自動(dòng)測(cè)試selenium精講實(shí)戰(zhàn)
1、selenium基礎(chǔ)實(shí)戰(zhàn)之定位網(wǎng)頁(yè)元素技巧上集
簡(jiǎn)介:講解使用selenium定位網(wǎng)頁(yè)元素,
find_element_by_id,find_element_by_name,find_element_by_class_name
1、開啟瀏覽器
browser = webdriver.Firefox();
2、打開網(wǎng)頁(yè)
browser.get("http://baidu.com")
使用python判斷是否正確
browser.title 或者 browser.current_url
3、定位元素的8種方法,(!!!!一定要唯一)
id: find_element_by_id() 采用id屬性進(jìn)行定位
name: find_element_by_name() 定位方式和id定位相似,id、name和class一般在網(wǎng)頁(yè)都至少會(huì)有其中的一種
class name: find_element_by_class_name() 定位方式和id定位相似,id、name和class一般在網(wǎng)頁(yè)都至少會(huì)有其中的一種
4、定位到元素后的方法
clear() //清空
send_keys() // 輸入
back()? //后退頁(yè)面
maximize_window() // 最大化窗口
click()? ?//點(diǎn)擊事件,點(diǎn)擊按鈕,超鏈接
submit() //提交表單
5、定位到元素后的屬性
tag_name? //標(biāo)簽名
text? //文本內(nèi)容
2、selenium基礎(chǔ)實(shí)戰(zhàn)之定位網(wǎng)頁(yè)元素技巧下集
簡(jiǎn)介:講解使用selenium定位網(wǎng)頁(yè)元素,
1、tag name:find_element_by_tag_name() 通過(guò)標(biāo)簽名去定位,用的少,如find_element_by_tag_name("div")
2、link text: find_element_by_link_text() 超鏈接內(nèi)容定位,元素內(nèi)容
如? xxx ,則find_element_by_link_text("xxx")
from time import sleep
sleep(5)
3、partial link text:find_element_by_partial_link_text() 超鏈接內(nèi)容定位,模糊匹配,和上面類似
比較難下面的兩種,下節(jié)課講解
xpath:
css selector
3、selenium實(shí)戰(zhàn)定位網(wǎng)頁(yè)元素之CSS定位
簡(jiǎn)介:講解使用css定位網(wǎng)頁(yè)元素
1、css selector:find_element_by_css_selector()
根據(jù)CSS屬性定位,一般class是用.標(biāo)記,id是用#標(biāo)記,定位方式也會(huì)比xpath快
如 find_element_by_css_selector('input[id=\'search\']')? ?// 規(guī)則:? 元素[屬性=值]
技巧:通過(guò)firebug的拷貝css路徑
路徑:審查元素-》右鍵-》復(fù)制-》css選擇器
4、selenium實(shí)戰(zhàn)定位網(wǎng)頁(yè)元素之xpath定位
簡(jiǎn)介:講解使用xpath定位網(wǎng)頁(yè)元素
1、xpath語(yǔ)法:http://www.w3school.com.cn/xpath/xpath_syntax.asp
注意 :? ”//“ 是全部的意思,即全文掃描,? ”/“ 的相鄰的意思, *是所有元素, ”..“是元素的父節(jié)點(diǎn), "."是當(dāng)前節(jié)點(diǎn)
2、xpath :find_element_by_xpath()xpath是XML路徑語(yǔ)言,通過(guò)元素的路徑來(lái)完成對(duì)元素的查找,HTML就是XML的一種實(shí)現(xiàn)方式,在FriePath插件里copy對(duì)應(yīng)的xpath地址
絕對(duì)路徑定位:從標(biāo)簽開始依次往下進(jìn)行查找
相對(duì)路徑:利用元素屬性來(lái)進(jìn)行xpath定位
技巧:通過(guò)firebug的拷貝css路徑
8種選擇器注意問(wèn)題:如果定位元素報(bào)錯(cuò),原因如下
1、根據(jù)定位取不到
2、多個(gè)元素根據(jù)下標(biāo)超出范圍,沒(méi)有0,從1開始
解決辦法:換其他方式定位元素
第五章 selenium實(shí)戰(zhàn)之模擬事件處理
1、自動(dòng)化測(cè)試實(shí)戰(zhàn)之ActionChains模擬用戶行為
簡(jiǎn)介:講解使用selenium里面的ActionChains模擬用戶的行為
需求:
需要模擬鼠標(biāo)操作才能進(jìn)行的情況,比如單擊、雙擊、點(diǎn)擊鼠標(biāo)右鍵、拖拽
解決:selenium提供了一個(gè)類來(lái)處理這類事件
selenium.webdriver.common.action_chains.ActionChains(driver)
腳本:
from selenium.webdriver.common.action_chains import ActionChains
執(zhí)行原理:
調(diào)用ActionChains的方法時(shí)不會(huì)立即執(zhí)行,會(huì)將所有的操作按順序存放在一個(gè)隊(duì)列里,當(dāng)調(diào)用perform()方法時(shí),隊(duì)列中的事件會(huì)依次執(zhí)行
支持鏈?zhǔn)綄懛ɑ蛘叻植綄懛?/p>
ActionChains(driver).click(ele).perform()
鼠標(biāo)和鍵盤方法列表:
perform() 執(zhí)行鏈中的所有動(dòng)作
click(on_element=None) 單擊鼠標(biāo)左鍵
context_click(on_element=None) 點(diǎn)擊鼠標(biāo)右鍵
double_click(on_element=None) 雙擊鼠標(biāo)左鍵
move_to_element(to_element) 鼠標(biāo)移動(dòng)到某個(gè)元素
ele.send_keys(keys_to_send) 發(fā)送某個(gè)詞到當(dāng)前焦點(diǎn)的元素
========== 不常用 ==========
click_and_hold(on_element=None) 點(diǎn)擊鼠標(biāo)左鍵,不松開
release(on_element=None) 在某個(gè)元素位置松開鼠標(biāo)左鍵
key_down(value, element=None) 按下某個(gè)鍵盤上的鍵
key_up(value, element=None) 松開某個(gè)鍵
drag_and_drop(source, target) 拖拽到某個(gè)元素然后松開
drag_and_drop_by_offset(source, xoffset, yoffset) 拖拽到某個(gè)坐標(biāo)然后松開
move_by_offset(xoffset, yoffset) 鼠標(biāo)從當(dāng)前位置移動(dòng)到某個(gè)坐標(biāo)
move_to_element_with_offset(to_element, xoffset, yoffset) 移動(dòng)到距某個(gè)元素(左上角坐標(biāo))多少距離的位置
send_keys_to_element(element, keys_to_send) 發(fā)送某個(gè)鍵到指定元素
2、鼠標(biāo)事件實(shí)戰(zhàn)之hover菜單欄彈出
簡(jiǎn)介:鼠標(biāo)事件之菜單欄hover彈出
1、
#引入 ActionChains 類
from selenium.webdriver.common.action_chains import ActionChains
2、move_to_element(to_element) 鼠標(biāo)移動(dòng)到某個(gè)元素
#對(duì)定位到的元素執(zhí)行鼠標(biāo)移動(dòng)到上面的操作
ActionChains(driver).move_to_element(ele1).perform()
3、多知識(shí)點(diǎn)綜合實(shí)戰(zhàn)之模擬用戶登錄
簡(jiǎn)介:講解使用selenium模擬登錄小D課堂,并選擇課程
1、多知識(shí)點(diǎn)實(shí)戰(zhàn)
2、查找登錄框-》輸入用戶名和密碼-》觸發(fā)登錄-》判斷登錄是否成功-》打印結(jié)果
4、自動(dòng)化測(cè)試實(shí)戰(zhàn)之網(wǎng)頁(yè)等待時(shí)間
簡(jiǎn)介:講解自動(dòng)化測(cè)試的等待時(shí)間
1、為什么需要等待時(shí)間--》等系統(tǒng)穩(wěn)定
網(wǎng)頁(yè)需要加載對(duì)應(yīng)的資源文件,頁(yè)面渲染,窗口處理等等
2、自動(dòng)化測(cè)試常用的等待時(shí)間
強(qiáng)制等待 : (自己調(diào)試代碼看效果)
from time import sleep
sleep(5)? # 強(qiáng)制等待5秒再執(zhí)行下一步,缺點(diǎn)是不管資源是不是完成,都必須等待
隱性等待:
driver.implicitly_wait(10)? # 隱性等待,最長(zhǎng)等10秒
#設(shè)置了一個(gè)最長(zhǎng)等待時(shí)間,如果在規(guī)定時(shí)間內(nèi)網(wǎng)頁(yè)加載完成,則執(zhí)行下一步,否則一直等到時(shí)間截止,然后執(zhí)行下一步,弊端就是程序會(huì)一直等待整個(gè)頁(yè)面加載完成,到瀏覽器標(biāo)簽欄那個(gè)加載圈不再轉(zhuǎn)
注意:對(duì)driver起作用,所以只要設(shè)置一次即可,沒(méi)有必要到處設(shè)置
顯性等待:
WebDriverWait 需要配合 until和until_not,程序每隔N秒檢查一次,如果成功,則執(zhí)行下一步,否則繼續(xù)等待,直到超過(guò)設(shè)置的最長(zhǎng)時(shí)間
from selenium.webdriver.support.wait import WebDriverWait
語(yǔ)法: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
結(jié)論: 隱性等待和顯性等待可以同時(shí)用,等待的最長(zhǎng)時(shí)間取兩者之中的較大者
總結(jié)
以上是生活随笔為你收集整理的python selenium自动化面试_18年selenium3+python3+unittest自动化测试教程(上)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python福利彩随机_看大神如何用Py
- 下一篇: java 任意代码执行漏洞_php-fp