selenium之webdriver詳解——小白進階之路(二)

筆記:

01.設置元素等待時間

自動化測試的時候,元素定位沒有錯,但是跑腳本的時候卻報錯了

例如,登錄的時候要等登錄頁面加載出來才能輸入用戶名和密碼

selenium設置元素等待時間的3種方式及區(qū)別

1.sleep() --固定等待時間:強制等待,不能把握準確的等等時間,適合調試時用

2.implicitly_wait() --隱式等待時間:等頁面加載完成才執(zhí)行下一步操作,一般設置一次即可

3.WebDriverWait --顯示等待時間:配合untill()和not untill()方法,根據判斷條件 靈活處理等待時間

要先設置一個超長時間,在這個時間內,程序根據調用頻率每隔幾秒查看一下,如果條件滿足,則執(zhí)行下一步操作,若不滿足且超過了等待時間則拋出異常

導包:from selenium.webdriver.support.ui import WebDriverWait

使用:WebDriverWait(driver, 超時時間, 調用頻率, 要忽略的異常).until(要執(zhí)行的方法, 超時時返回的錯誤信息)

實例:


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鼠標懸停類-- ActionChains()

導包:from selenium.webdriver.common.action_chainsimport ActionChains


實例:將鼠標移動至更多設置,懸停鼠標


elem1= dr.find_element(By.LINK_TEXT,"設置")

ActionChains(dr).move_to_element(elem1).perform()



05.selenium警告框的處理

很多web應用經常會遇到JavaScript編寫的alert 、confirm 以及prompt?彈窗,需要用到switch_to.alert來切換彈窗,并對彈窗進行輸入信息,關閉等處理。

switch_to.alert.text? --獲取彈窗文本信息

switch_to.alert.accept()? --點擊彈窗中確定按鈕

switch_to.alert.dismiss()? --點擊彈出中取消按鈕

switch_to.alert.sendKeys("字符串")? --在彈窗中輸入信息

實例:



06.下拉菜單選擇的三種方式


導包:from selenium.webdriver.support.uiimport Select

#選擇下拉框的o2

elem1 = dr.find_element(By.ID,"s3Id")

1:根據value值定位

Select(elem1).select_by_value("o2val")

2.根據index定位

Select(elem1).select_by_index(1)

3.根據下拉框文本信息定位

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操作隱藏元素


隱藏元素的標識:style="display:none;"

一般我們通過將隱藏元素的屬性修改成顯示再定位




10.操作excel文件

將測試數(shù)據參數(shù)化用到

10.1準備參數(shù)化數(shù)據文件


10.2導包

打開文件,填寫文檔路徑


運行結果:

定位到sheet的位置

讀取sheet的行和列的內容

#讀取表的行的方法

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)


#輸出所有用戶名和對應的密碼

for iin range(1,rows):

print("用戶名:" + sheet1.row_values(i)[0] +",密碼:" + sheet1.row_values(i)[1])


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 摘要: 之前用Selenium做UI自動化測試從初學到熟練碰到過很多問題,這里就不一一細說了,所以把最基本的操作都...
    Vicky_習慣做唯一閱讀 11,650評論 1 23
  • 這篇文章在介紹官網的同時使用了比較多的腳本示例,示例里遇到的問題有部分在本篇文章進行了解釋,還有一篇文章專門記錄了...
    顧顧314閱讀 13,094評論 3 32
  • 洞見SELENIUM自動化測試 寫在最前面:目前自動化測試并不屬于新鮮的事物,或者說自動化測試的各種方法論已經層出...
    厲鉚兄閱讀 6,844評論 3 47
  • 1, 下雨天趕走了好脾氣, 淋濕了心情,就煩透了天氣, 面無表情的將所有來歷都忘記; 我是路人甲乙丙丁,有什么關系...
    陶笛楽要耍哼哼哈嘿閱讀 293評論 0 0
  • 想成為你一生中最溫柔的秘密 我想嫁給你 在春暖花開的季節(jié)把裙邊提起 我想嫁給你 在一望無際的黑夜輕嗅你的呼吸 多少...
    顧清念閱讀 452評論 7 10

友情鏈接更多精彩內容