筆記:
01.設(shè)置元素等待時間
自動化測試的時候乘盖,元素定位沒有錯,但是跑腳本的時候卻報錯了
例如譬嚣,登錄的時候要等登錄頁面加載出來才能輸入用戶名和密碼
selenium設(shè)置元素等待時間的3種方式及區(qū)別
1.sleep() --固定等待時間:強(qiáng)制等待缸夹,不能把握準(zhǔn)確的等等時間,適合調(diào)試時用
2.implicitly_wait() --隱式等待時間:等頁面加載完成才執(zhí)行下一步操作盅抚,一般設(shè)置一次即可
3.WebDriverWait --顯示等待時間:配合untill()和not untill()方法,根據(jù)判斷條件 靈活處理等待時間
要先設(shè)置一個超長時間,在這個時間內(nèi)塔猾,程序根據(jù)調(diào)用頻率每隔幾秒查看一下,如果條件滿足稽坤,則執(zhí)行下一步操作丈甸,若不滿足且超過了等待時間則拋出異常
導(dǎo)包:from selenium.webdriver.support.ui import WebDriverWait
使用:WebDriverWait(driver, 超時時間, 調(diào)用頻率, 要忽略的異常).until(要執(zhí)行的方法, 超時時返回的錯誤信息)
實(shí)例:
replace:
02.鍵盤事件Keys類
制表符:send_keys(Keys.TAB)
退出鍵:send_keys(Keys.ESCAPE)
F1:send_keys(Keys.F1)? ?f1~f12 以此類推
03.二次定位
顧名思義,通過多個元素尿褪,定位兩次
dr.find_element(By.CLASS_NAME,"s_input").send_keys("python")
二次定位:
dr.find_element(By.NAME,"query").find_element(By.CLASS_NAME,"s_input").send_keys("python")
04.selenium鼠標(biāo)懸停類-- ActionChains()
導(dǎo)包:from selenium.webdriver.common.action_chainsimport ActionChains
實(shí)例:將鼠標(biāo)移動至更多設(shè)置睦擂,懸停鼠標(biāo)
elem1= dr.find_element(By.LINK_TEXT,"設(shè)置")
ActionChains(dr).move_to_element(elem1).perform()
05.selenium警告框的處理
很多web應(yīng)用經(jīng)常會遇到JavaScript編寫的alert 、confirm 以及prompt?彈窗杖玲,需要用到switch_to.alert來切換彈窗顿仇,并對彈窗進(jìn)行輸入信息,關(guān)閉等處理摆马。
switch_to.alert.text? --獲取彈窗文本信息
switch_to.alert.accept()? --點(diǎn)擊彈窗中確定按鈕
switch_to.alert.dismiss()? --點(diǎn)擊彈出中取消按鈕
switch_to.alert.sendKeys("字符串")? --在彈窗中輸入信息
實(shí)例:
06.下拉菜單選擇的三種方式
導(dǎo)包:from selenium.webdriver.support.uiimport Select
#選擇下拉框的o2
elem1 = dr.find_element(By.ID,"s3Id")
1:根據(jù)value值定位
Select(elem1).select_by_value("o2val")
2.根據(jù)index定位
Select(elem1).select_by_index(1)
3.根據(jù)下拉框文本信息定位
Select(elem1).select_by_visible_text("o2")
07.多窗口切換
window_handles --獲取所有窗口句柄
switch_to.window(指定窗口) --切換到指定窗口
08.selenium之JS操作瀏覽器滾動條位置
execute_script("window.scrollTo(0,n);")
09.selenium之JS操作隱藏元素
隱藏元素的標(biāo)識:style="display:none;"
一般我們通過將隱藏元素的屬性修改成顯示再定位
10.操作excel文件
將測試數(shù)據(jù)參數(shù)化用到
10.1準(zhǔn)備參數(shù)化數(shù)據(jù)文件
10.2導(dǎo)包
打開文件臼闻,填寫文檔路徑
運(yùn)行結(jié)果:
定位到sheet的位置
讀取sheet的行和列的內(nèi)容
#讀取表的行的方法
rows = sheet1.nrows
print("行數(shù)",rows)
columns = sheet1.ncols
print("列數(shù)",columns)
讀取指定行的值
#讀取指定行的值
rowValue1 = sheet1.row_values(0)
print(rowValue1)
#讀取指定列的值
colValue1 = sheet1.col_values(0)
print(colValue1)
#輸出所有用戶名和對應(yīng)的密碼
for iin range(1,rows):
print("用戶名:" + sheet1.row_values(i)[0] +",密碼:" + sheet1.row_values(i)[1])