<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      推薦一款新的自動化測試框架:DrissionPage!

      今天給大家推薦一款基于Python的網(wǎng)頁自動化工具:DrissionPage。這款工具既能控制瀏覽器,也能收發(fā)數(shù)據(jù)包,甚至能把兩者合而為一,簡單來說:集合了WEB瀏覽器自動化的便利性和 requests 的高效率。

      一、DrissionPage產(chǎn)生背景

      實現(xiàn)網(wǎng)頁自動化,會有兩類形式:

      • 直接向服務(wù)器發(fā)送請求數(shù)據(jù)包,獲取需要的數(shù)據(jù)
      • 模擬真實用戶操作行為,控制瀏覽器跟網(wǎng)頁進(jìn)行交互

      前者輕量級,速度快,例如requests 庫。但requests面對需要登錄的網(wǎng)站時,往往還要應(yīng)付驗證碼、JS 混淆、簽名參數(shù)等反爬手段,門檻較高。若數(shù)據(jù)是由 JS 計算生成的,還須重現(xiàn)計算過程,開發(fā)效率不高。

      而后者直接使用瀏覽器,模擬用戶行為,如Selenium庫,可以很大程度上繞過這些坑,但瀏覽器運行效率不高。

      因此,DrissionPag設(shè)計初衷,是將它們合而為一,能夠在不同須要時切換相應(yīng)模式,并提供一種人性化的使用方法,提高開發(fā)和運行效率。

      為什么叫DrissionPag

      Selenium框架用于操作瀏覽器的對象叫 Driver,requests 用于管理請求連接的對象叫 Session,因此Drission 就是它們兩者的合體。在舊版本中,是通過對 selenium 和 requests 的重新封裝實現(xiàn)的。

      但從 3.0 版開始,作者另起爐灶,用 chromium 協(xié)議自行實現(xiàn)了 selenium 全部功能,從而擺脫了對 selenium 的依賴,功能更多更強,運行效率更高,開發(fā)更靈活。

      二、DrissionPage亮點特色

      本庫采用全自研的內(nèi)核,對比 selenium,有以下優(yōu)點:

      • 無 webdriver 特征,不會被網(wǎng)站識別,無需為不同版本的瀏覽器下載不同的驅(qū)動
      • 運行速度更快,可以跨 iframe 查找元素,無需切入切出,iframe 看作普通元素,獲取后可直接在其中查找元素,邏輯更清晰
      • 可以同時操作瀏覽器中的多個標(biāo)簽頁,即使標(biāo)簽頁為非激活狀態(tài),無需切換
      • 內(nèi)置等待和自動重試功能。使不穩(wěn)定的網(wǎng)絡(luò)變得易于控制,程序更穩(wěn)定,編寫更省心
      • 允許反復(fù)使用已經(jīng)打開的瀏覽器。無須每次運行從頭啟動瀏覽器,調(diào)試超方便
      • 極簡的語法規(guī)則。集成大量常用功能,定位元素更加容易,功能更強大穩(wěn)定
      • 使用 POM 模式封裝,可直接用于測試,便于擴展
      • 等等。。。

      三、安裝搭建

      說了這么多,相信很多人已經(jīng)躍躍欲試了,怎么快速搭建這套框架,先要準(zhǔn)備一些基礎(chǔ)環(huán)境。

      環(huán)境準(zhǔn)備

      • 操作系統(tǒng):Windows、Linux 或 Mac。
      • python 版本:3.6 及以上
      • 支持瀏覽器:Chromium 內(nèi)核(如 Chrome 和 Edge)

      項目地址:

      https://gitee.com/g1879/DrissionPage
      

      使用 pip 安裝 DrissionPage:

      pip install DrissionPage
      

      另外在開始之前,我們先進(jìn)行一些簡單設(shè)置。如果只使用收發(fā)數(shù)據(jù)包功能,無須任何準(zhǔn)備工作。

      如果要控制瀏覽器,須設(shè)置瀏覽器路徑。程序默認(rèn)設(shè)置控制 Chrome,所以以下用 Chrome 作為演示。如果要使用 Edge 或其它 Chromium 內(nèi)核瀏覽器,設(shè)置方法是一樣的。

      設(shè)置瀏覽器路徑:

      from DrissionPage.easy_set import set_paths
      set_paths(browser_path=r'這里修改為您的Chrome瀏覽器exe文件路徑')
      

      這段代碼會記錄 Chrome 瀏覽器路徑到配置文件。由于路徑設(shè)置只要運行一次即可,不要寫到正式程序里。一般建議新建一個臨時 py 文件,并輸入以下代碼,填入您電腦里的 Chrome 瀏覽器 exe 文件路徑,然后執(zhí)行。

      四、實戰(zhàn)一下

      1、嘗試啟動瀏覽器:

      from DrissionPage import ChromiumPage
      
      page = ChromiumPage()
      page.get('https://www.baidu.com')
      
      

      執(zhí)行以下代碼,如果正常啟動了瀏覽器并且訪問了百度,說明可直接使用,跳過后面的步驟即可。

      執(zhí)行代碼前,如果已有打開的 Chrome 瀏覽器,請關(guān)閉。

      2、與selenium框架代碼對比

      #案例一:用顯性等待方式查找第一個文本包含 some text 的元素。
      # 使用 selenium:
      element = WebDriverWait(driver).until(ec.presence_of_element_located((By.XPATH, '//*[contains(text(), "some text")]')))
      
      # 使用 DrissionPage:
      element = page('some text')
      
      #案例二:跳轉(zhuǎn)到第一個標(biāo)簽頁
      # 使用 selenium:
      driver.switch_to.window(driver.window_handles[0])
      
      # 使用 DrissionPage:
      page.to_tab(0)
      
      # 案例三:拖拽一個元素
      # 使用 selenium:
      ActionChains(driver).drag_and_drop(ele1, ele2).perform()
      
      # 使用 DrissionPage:
      ele1.drag_to(ele2)
      

      以上代碼實現(xiàn)一模一樣的功能,但DrissionPage代碼明顯更簡潔優(yōu)雅。

      3、與requests框架代碼對比

      # 案例一:獲取元素內(nèi)容
      url = 'https://baike.baidu.com/item/python'
      
      # 使用 requests:
      from lxml import etree
      headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'}
      response = requests.get(url, headers = headers)
      html = etree.HTML(response.text)
      element = html.xpath('//h1')[0]
      title = element.text
      
      # 使用 DrissionPage:
      page = WebPage('s')
      page.get(url)
      title = page('tag:h1').text
      

      4、DrissionPage不同模式切換

      例如:用瀏覽器登錄網(wǎng)站,然后切換到 requests 讀取網(wǎng)頁。兩者會共享登錄信息。

      from DrissionPage import WebPage
      from time import sleep
      
      # 創(chuàng)建頁面對象,默認(rèn) d 模式
      page = WebPage()  
      # 訪問個人中心頁面(未登錄,重定向到登錄頁面)
      page.get('https://gitee.com/profile')  
      
      # 使用 selenium 輸入賬號密碼登錄
      page.ele('@id:user_login').input('your_user_name')  
      page.ele('@id:user_password').input('your_password\n')
      sleep(1)
      
      # 切換到 s 模式
      page.change_mode()  
      # 登錄后 session 模式的輸出
      print('登錄后title:', page.title, '\n')  
      

      五、小結(jié)

      DrissionPage體驗一番后,雖然也發(fā)現(xiàn)了一些不足的地方,但整得來講,很多設(shè)計理念還是非常值得借鑒的,更多功能就留給大家去探索了,項目文檔地址:

      http://g1879.gitee.io/drissionpagedocs/
      
      posted @ 2023-02-21 10:01  狂師  閱讀(5538)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲自在精品网久久一区| 亚洲女同精品久久女同| 国产亚洲精品第一综合另类| 制服丝袜长腿无码专区第一页 | 亚洲永久精品免费在线看| 久久久久亚洲av成人网址| 精品久久人人做爽综合| 国产怡春院无码一区二区| 色一乱一伦一图一区二区精品| 国产探花在线精品一区二区| 欧美日韩精品一区二区在线观看| 国产午夜福利视频合集| 欧美丰满熟妇xxxx性| 日韩精品中文字幕有码| 国产精品成人av电影不卡 | 青草青草久热精品视频在线观看| 人妻va精品va欧美va| 国产丰满乱子伦午夜福利| 九九热免费在线播放视频| 私人毛片免费高清影视院| 亚洲女女女同性video| 国产成人高清精品亚洲| 托克逊县| 亚洲中文字幕在线二页| 毛片大全真人在线| 三门县| 亚洲国产大片永久免费看| 国产成人高清精品亚洲| 久激情内射婷内射蜜桃| 俄罗斯美女真人性做爰| 黑森林福利视频导航| 国产精品国产三级国产午| 亚洲成在人线在线播放无码| 钟祥市| 精品国产不卡在线观看免费| 亚洲欧美一区二区成人片| 婷婷四虎东京热无码群交双飞视频| 中文字幕亚洲精品人妻| 亚洲精品麻豆一区二区| 亚洲中文无码手机永久| 亚洲在线一区二区三区四区|