真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

requests進(jìn)行webdriver協(xié)議,模仿selenium

準(zhǔn)備工作

  • 你在做下面的練習(xí)之前應(yīng)該具備

    我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、福鼎ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的福鼎網(wǎng)站制作公司

    • 安裝好chrome,并通過chrome://version確認(rèn)其版本號

    • 安裝chromedriver并與你的chrome版本相匹配,下載路徑如下

      https://registry.npmmirror.com/binary.html?path=chromedriver/
      
    • 你應(yīng)該有一個(gè)python+ide(如pycharm)的環(huán)境,反正下面的示例是用這些來完成的。

    • 下好requests庫,對語法不再闡述

關(guān)于chromedriver

  • 本質(zhì)上是個(gè)web server

  • 在命令行啟動chromedriver應(yīng)該是如下提示

    cmd>chromedriver.exe
    Starting ChromeDriver 100.0.4896.20 (f9d71f93d32ad6f35a9670c879fe97dfe-refs/branch-heads/4896@{#203}) on port 9515
    Only local connections are allowed.
    Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
    ChromeDriver was started successfully.
    
  • 放在那里不要關(guān)閉哦~

關(guān)于webdriver

  • 參閱:6.5的endpoint部分

    https://w3c.github.io/webdriver/#endpoints
    

開始

我就不封裝了,你有興趣自行封裝

不一樣的,打開瀏覽器

Method URI Template Command
POST /session New Session
  • 示例代碼:以chrome為例

    import requests
    server_url = 'http://127.0.0.1:9515/session' 
    session_data = {
        'desiredCapabilities':{
            "caps":{"browserName":"chrome"}   #此處可以變更瀏覽器類型,前提你啟動了對應(yīng)的chromedriver或者geckodriver等。
        }
    }
    session_req = requests.post(url=server_url,json=session_data)  #json傳遞
    
  • 是不是相當(dāng)于selenium的api

    from selenium import webdriver
    driver = webdriver.Chrome()
    
  • 區(qū)別是?不需要安裝selenium就可以通過api來調(diào)用了,當(dāng)然會更麻煩,人家給你封裝好了。

不一樣的,輸入網(wǎng)址

Method URI Template Command
POST /session New Session
POST /session/{session id}/url Navigate To
  • 示例代碼

    import requests
    from time import sleep
    server_url = 'http://127.0.0.1:9515/session'  #這個(gè)url不能以/結(jié)尾
    session_data = {
        'desiredCapabilities':{
            "caps":{"browserName":"chrome"}
        }
    }
    session_req = requests.post(url=server_url,json=session_data)  #此處不能是data
    # 打開網(wǎng)址
    session_id = session_req.json().get('sessionId')  #首先要獲取sessionId,是后面操作的根基
    dest_url = 'http://121.41.14.39:8088/index.html#/'  #比如你要打開這個(gè)網(wǎng)址
    get_url_data = {'url':dest_url}  #字典形式
    requests.post(server_url+'/'+session_id+'/url',json=get_url_data) #注意url的格式,跟ep對比
    
    
  • 是不是類似于selenium中的driver.get()

不一樣的,輸入,點(diǎn)擊

Method URI Template Command
POST /session New Session
POST /session/{session id}/url Navigate To
POST /session/{session id}/element Find Element
POST /session/{session id}/element/{element id}/click Element Click
POST /session/{session id}/element/{element id}/value Element Send Keys
  • 示例代碼

    import requests
    from time import sleep
    #登錄
    # 1. 打開瀏覽器
    server_url = 'http://127.0.0.1:9515/session'  #這個(gè)url不能以/結(jié)尾
    session_data = {
        'desiredCapabilities':{
            "caps":{"browserName":"chrome"}
        }
    }
    session_req = requests.post(url=server_url,json=session_data)  #此處不能是data
    # 2. 輸入網(wǎng)址
    session_id = session_req.json().get('sessionId')
    dest_url = 'http://106.14.1.150:8090/forum.php'  #這是我在阿里云部署的一個(gè)服務(wù)器
    get_url_data = {'url':dest_url}
    requests.post(server_url+'/'+session_id+'/url',json=get_url_data)
    
    # 簡單封裝下
    def get_eid(url,sid,method,method_value):  #獲取elementid
        data = {'using':method,'value':method_value}
        return requests.post(url+'/'+sid+'/element',json=data).json().get('value').get('ELEMENT')
    def input_text(url,sid,eid,text): #在指定的元素上輸入內(nèi)容
        data = {'value':[text]}
        requests.post(url+'/'+sid+'/element/'+eid+'/value', json=data)
    def click_element(url,sid,eid): #點(diǎn)擊指定的元素
        requests.post(url + '/' + sid + '/element/' + eid + '/click')
        
    # 3. 輸入用戶名
    # 3.1 獲取用戶名元素的elementid,通過id方式,其值為ls_username
    username_id = get_eid(server_url,session_id,'id','ls_username')
    input_text(server_url,session_id,username_id,'ruru023')
    sleep(2)
    # 3.2 獲取密碼元素的elementid,通過id方式,其值為ls_password
    password_id = get_eid(server_url,session_id,'id','ls_password')
    input_text(server_url,session_id,password_id,'')
    sleep(2)
    # 3.3 獲取登錄按鈕元素的elementid,通過css selector方式,其值為.pn.vm
    login_button_id =  get_eid(server_url,session_id,'css selector','.pn.vm')
    click_element(server_url,session_id,login_button_id)
    
  • 類似于seleniumapi中的

    • webelement.send_keys()
    • webelement.click()
    • driver.find_element(By.ID,'ID_VALUE')

網(wǎng)站名稱:requests進(jìn)行webdriver協(xié)議,模仿selenium
分享網(wǎng)址:http://weahome.cn/article/dsoggoj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部