python+selenium自動(dòng)化框架(基礎(chǔ)部分)

一.selenium實(shí)現(xiàn)自動(dòng)化的原理

selenium的核心是webdriver
webdriver是按照client-------server設(shè)計(jì)原理設(shè)計(jì)
client簡(jiǎn)單來(lái)說(shuō)就是我們寫的代碼,以http請(qǐng)求的方式發(fā)給server端

server端接收請(qǐng)求,執(zhí)行相應(yīng)的操作,并返回給client端, 這里的server實(shí)際上就是我們下載的對(duì)應(yīng)版本瀏覽器的驅(qū)動(dòng) webdriver(我們常用的webdrivers 有chromedriver,IEdriver,firefoxdriver)

原理小結(jié):
客戶端(我們寫的代碼)通過(guò)調(diào)用selenium包中的一些方法(函數(shù))向javascript寫的webdriver服務(wù)端發(fā)送請(qǐng)求,webdriver來(lái)操作頁(yè)面元素,模擬人手工測(cè)試(點(diǎn)擊,輸入,滑動(dòng),切換窗口)的過(guò)程
所以我們使用時(shí)需要導(dǎo)包,然后需要了解selenium已經(jīng)封裝好的方法,調(diào)用這些方法,讓方法調(diào)用底層代碼寫的方法來(lái)向webdriver發(fā)送請(qǐng)求,讓webdriver去操作頁(yè)面元素,來(lái)代替我們手工操作,將重復(fù)性工作固化,然后我們?cè)偈褂胘enkins出發(fā)定時(shí)任務(wù)去執(zhí)行代碼,即可代替我們重復(fù)性工作

二.常用控件定位

1.定位文本框,密碼框
image.png

2.定位按鈕,鏈接

先使用web元素定位定位到按鈕或鏈接,再使用click() 方法進(jìn)行點(diǎn)擊
image.png
  1. 獲取元素的文本 (常用來(lái)斷言,用例執(zhí)行完后檢查是否通過(guò))

    方法: 先使用web元素定位,再使用.text方法 ,注意 text方法后沒(méi)有()
    image.png
  2. 獲取元素的屬性 (目前不知道有啥用)

  3. 切換窗口
    image.png
  4. 獲取窗口title (常用來(lái)斷言)
    image.png

    7.窗口最大化
    image.png
  5. 窗口刷新 (基本不用,用的時(shí)候再看)

  6. 返回上一步(基本不用,無(wú)實(shí)用性,不用看)

  7. 獲取窗口的尺寸

  8. 關(guān)閉瀏覽器
    (1)關(guān)閉當(dāng)前窗口
    driver.close()
    (2)關(guān)閉瀏覽器(所有窗口)
    driver.quit()

  9. 獲取下拉框中的選項(xiàng) (必用)
    image.png
  10. 鼠標(biāo)懸停 (重點(diǎn)) 【 RF中的mouse over. 鼠標(biāo)懸停后才有下拉框,鼠標(biāo)移走后,顯示的內(nèi)容消失】
    引入類: ActionChains()
    from selenium.webdriver.common.action_chains import ActionChains

實(shí)例方法: move_to_element()

鼠標(biāo)要移動(dòng)到懸停位置, 首先得定位到整個(gè)位置
mouse =driver.find_element_by_link_text("設(shè)置")
然后使用
ActionChains(driver).move_to_element(mouse).perform()
ActionChains是個(gè)類,ActionChains()構(gòu)造方法,將driver對(duì)象傳入

  1. alert彈窗 (警告型彈框,只有確認(rèn)按鈕)


    image.png

定位方法
driver.switch_to.alert 注意alert后沒(méi)有()
此時(shí)已經(jīng)切換到了alert彈窗上,此時(shí)整個(gè)alter彈窗是一個(gè)對(duì)象,使用t.text可以返回的彈窗上顯示的文本值并打印
將driver.switch_to.alert對(duì)象賦值給變量t=driver.switch_to.alert
最后調(diào)用彈窗對(duì)象的accept()方法 點(diǎn)擊alert彈窗的確定按鈕,如下

image.png

點(diǎn)擊取消按鈕,使用 t.dismiss()方法

確認(rèn)型彈框 (有確定,有取消)
點(diǎn)擊確定按鈕,使用t.accept()方法
點(diǎn)擊取消按鈕,使用 t.dismiss()方法

image.png

輸入型彈框
輸入型彈框如下

image.png
可以輸入內(nèi)容,彈框中也有默認(rèn)內(nèi)容

  1. frame框架處理 (重點(diǎn),曾經(jīng)面試問(wèn)過(guò))

定位的元素在frame/iframe框里面,定位時(shí)要先進(jìn)入frame框里面,再進(jìn)行元素定位
進(jìn)入frame框的方法 switch_to_frame()
原本在frame/iframe框里面,現(xiàn)在要定位frame框外的元素,需要先退出frame/iframe再進(jìn)行定位

退出frame框的方法switch_to_defalut_content()

注意: 定位的frame中包含frame時(shí),需要多次 switch_to_frame() , 從外一層層進(jìn)入,退出的時(shí)候從里使用switch_to_defalut_content(),退出到最外一層

常見(jiàn)的用id,xpath沒(méi)有定位到, 異常報(bào)元素沒(méi)有被找到, 就看一下上一層有沒(méi)有frame/iframe框
image.png

定位frame/iframe框的方法 【frame,iframe理解為一個(gè)東西,叫法不一樣】

可以傳入 index 或者 name(frame名稱) 或者 frame的定位信息(比如ID)
image.png
  1. 滾動(dòng)條處理
    滾動(dòng)條是由javascript寫的
    方法:execute_script()
    移動(dòng)滾動(dòng)條的javascript代碼
    js = “window.scrollTo(0,2000)” #向下滾動(dòng)2000px , 0代表頂端

    driver.execute_script(js) #執(zhí)行腳本
    image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容