午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

selenium重點(diǎn)知識講解...

 館藏室101 2022-02-17

一、顯式等待和隱式等待:

1、直接等待:

強(qiáng)制等待,線程休眠一段時(shí)間

time.sleep(3)

2、隱式等待:

設(shè)置一個(gè)等待時(shí)間,輪詢查找(默認(rèn)0.5秒)元素是否出現(xiàn),如果在等待時(shí)間內(nèi)出現(xiàn)元素,則退出等待,如果沒有出現(xiàn)則拋出異常

self.driver.implicitly_wait(3)

(1)缺點(diǎn):設(shè)置的是全局的等待,作用于所有find_element()方法;
(2)找到元素就會退出,不管元素是否加載到可點(diǎn)擊狀態(tài)。

3、顯式等待:

在這里插入圖片描述
在這里插入圖片描述

在代碼中定義條件,當(dāng)條件發(fā)生時(shí)才繼續(xù)執(zhí)行代碼。WedDriverWait配合until()until_not()方法,根據(jù)判斷條件進(jìn)行等待。

def findelement(self, loc, wait=10, num=0.5):
    '''定位元素'''
    element = WebDriverWait(self.driver, wait,num).until(EC.presence_of_element_located(loc))
    return element

程序每隔一段時(shí)間(默認(rèn)0.5秒)進(jìn)行條件判斷,如果條件成立,則執(zhí)行下一步,否則繼續(xù)等待,直到超過設(shè)置的最長等待時(shí)間。

(1)注意:

  • until()until_not()中需要傳一個(gè)方法名(不需要帶括號,僅方法名),這個(gè)方法必須要有一個(gè)入?yún)ⅲ蓞⒖紆ntil源碼)
  • expected_conditions中提供了大量可用的條件方法(可參考 expected_conditions源碼)

在這里插入圖片描述

二、web控件定位和常見操作

在這里插入圖片描述

1、xpath

(1)缺點(diǎn):

  • 速度慢:從頭到尾遍歷

(1)優(yōu)點(diǎn):

  • 可以用于appnium和selenium

2、css_selector:

  • 用的是css選擇器,速度更快,用樣式來定位
  • by.Id,by.name,by.tag_name,by.class_name本質(zhì)是css_selector

在這里插入圖片描述

3、Actions

3.1、ActionChains:

執(zhí)行PC端的鼠標(biāo)點(diǎn)擊,雙擊,右鍵和拖拽等事件:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

3.2、TouchActions:

模擬PC和移動端的點(diǎn)擊,滑動,拖拽,多點(diǎn)觸控等多種手勢操作;
在這里插入圖片描述

三、其他

1、多窗口處理:

  • 獲取當(dāng)前頁面的句柄:driver.current_window_handle
  • 獲取當(dāng)前所以的句柄:driver.window_handles
  • 切換至所需要操作的句柄:driver.switch_to.window()
def switch_window(self,data,type='index',isClose=False):
    '''切換窗口,可根據(jù)index,url,title,handle切換'''
    to_window=current_window = self.driver.current_window_handle  # 當(dāng)前窗口句柄
    windows = self.driver.window_handles  # 所有窗口句柄
    if type=='index' and isinstance(data,int):  # 根據(jù)窗口順序切換
        to_window=windows[data]
    elif type=='handle':
        to_window = data
    else:
        for handle in windows:
            self.driver.switch_to.window(handle)
            if type == 'url':
                current_url = self.driver.current_url
                if data in current_url:
                    to_window=handle
                    break
            elif type=='title':
                current_title=self.driver.title
                if data in current_title:
                    to_window = handle
                    break
    # 切換至所需要的句柄
    self.driver.switch_to.window(to_window)
    if isClose:
    	# 關(guān)閉掉第一個(gè)句柄,僅保留第二個(gè)句柄
    	self.driver.switch_to.window(current_window)
        self.driver.close()
    return current_window,to_window

2、frame處理:

在這里插入圖片描述

  • 切換至frame:switch_to.frame(reference)(reference是傳入的參數(shù),用來定位frame,可以傳入id、name、index以及selenium的WebElement對象)
  • 從frame切回主文檔:driver.switch_to.default_content()
  • 嵌套frame的操作:driver.switch_to.parent_frame() (從子frame切回到父frame,如果當(dāng)前已是主文檔,則無效果)

3、JS的處理:

處理方法是用js把隱藏的顯示出來,方法如下:
js="document.getElementById('li').style.display='block';"
driver.execute_script(js)

1、時(shí)間控件的處理:
在這里插入圖片描述
在這里插入圖片描述

4、彈窗處理機(jī)制:

在這里插入圖片描述

5、解決掃碼登錄問題:

1、復(fù)用已有瀏覽器:

不會重新開啟一個(gè)瀏覽器,復(fù)用已經(jīng)在運(yùn)行的瀏覽器
在這里插入圖片描述
之后,我們就可以在啟動的瀏覽器上運(yùn)行我們的測試代碼了。

2、通過獲取當(dāng)前瀏覽器cookie的方式

  • 以企業(yè)微信的后臺管理登錄為例,使用新的瀏覽器,打開登錄掃碼頁面,強(qiáng)制等待10秒手動完成掃碼,掃碼進(jìn)入管理后臺;
  • 登錄后,在代碼中使用driver返回當(dāng)前頁面的cookies值,并保存為json文件;

在這里插入圖片描述
在這里插入圖片描述

  • 后續(xù)的測試用例,可以使用新保存的cookie,添加在driver中即可
    在這里插入圖片描述

6、PO模式

(1)po模式六大原則

  • 公共方法代表頁面提供的服務(wù)
  • 不要暴露頁面細(xì)節(jié)
  • 不要把斷言和操作細(xì)節(jié)混用
  • 方法可以return到新打開的頁面
  • 不要把整頁內(nèi)容都放到PO中
  • 相同的行為會產(chǎn)生不同的結(jié)果,可以封裝不同結(jié)果

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多