webdriver對(duì)瀏覽器的一些常用操作

js 控制

webdriver可以用來(lái)執(zhí)行javascript代碼,相應(yīng)的方法:execute_script

#coding=utf-8
import sys
from selenium import webdriver
import time
surl = 'http://www.baidu.com'
kw = sys.argv[1]
print kw

def search(keyword):
    driver = webdriver.Firefox()
    driver.get(surl)
    driver.find_element_by_id('kw').send_keys(keyword)
    driver.find_element_by_id('su').click()
    return driver

def testjs():
    driver = search(kw)
    js1 = 'document.documentElement.scrollTop=10000'
    js2 = 'document.documentElement.scrollTop=0'
    driver.execute_script(js1)
    time.sleep(3)
    driver.execute_script(js2)
        driver.quit()
if __name__ == "__main__":
    testjs()

將代碼保存為baiduscroll.py,在命令行中執(zhí)行
python baiduscroll.py selenium查看執(zhí)行結(jié)果

窗口截屏

相應(yīng)方法get_screenshot_as_file()
同樣的,我們直接在上一個(gè)文件中進(jìn)行修改,將誰(shuí)的重命名為sshot.py

#coding=utf-8
import sys
from selenium import webdriver
import time
surl = 'http://www.baidu.com'
kw = sys.argv[1]
print kw

def search(keyword):
    driver = webdriver.Firefox()
    driver.get(surl)
    driver.find_element_by_id('kw').send_keys(keyword)
    driver.find_element_by_id('su').click()
    driver.get_screenshot_as_file('./shottest.jpg')
    return driver

def testjs():
    driver = search(kw)
    js1 = 'document.documentElement.scrollTop=10000'
    js2 = 'document.documentElement.scrollTop=0'
    driver.execute_script(js1)
    time.sleep(3)
    driver.execute_script(js2)
        driver.quit()

if __name__ == "__main__":
    testjs()

執(zhí)行后可以看到當(dāng)前文件夾下多了一個(gè)shottest.jpg

shottest.jpg

關(guān)閉窗口

相應(yīng)方法quit(),這個(gè)我們?cè)谏厦娴哪_本中已經(jīng)應(yīng)用過(guò)了

關(guān)于屏幕操作

set_window_size() 設(shè)置屏幕大小
maximize_window()全屏
back()后退
forward()前進(jìn)

webdriver的設(shè)計(jì)原理

  • WebDriver 是按照 server – client 的經(jīng)典設(shè)計(jì)模式設(shè)計(jì)的。
    server 端就是 remote server,可以是任意的瀏覽器。當(dāng)我們的腳本啟動(dòng)瀏覽器后,該瀏覽器就是 remoteserver,它的職責(zé)就是等待 client 發(fā)送請(qǐng)求并做出相應(yīng)。client 端簡(jiǎn)單說(shuō)來(lái)就是我們的測(cè)試代碼,我們測(cè)試代碼中的一些行為,比如打開(kāi)瀏覽器,轉(zhuǎn)跳到特定的 url 等操作是以 http 請(qǐng)求的方式發(fā)送給被 測(cè)試瀏覽器,也就是 remote server;remote server 接受請(qǐng)求,并執(zhí)行相應(yīng)操作,并在 response 中返回執(zhí)行狀態(tài)、返回值等信息。

webdriver工作流程

  1. webdriver啟動(dòng)目標(biāo)瀏覽器,并綁定到指定端口,該啟動(dòng)的瀏覽器實(shí)例,做為webdriver的remoteserver。
  2. client端通過(guò)commandExcuter發(fā)送HTTPRequest經(jīng)remoteserver的偵聽(tīng)端口(協(xié)議:the webdriver wire protocol)
  3. Remote server 需要依賴原生的瀏覽器組件(如:IEDriverServer.exe、chromedriver.exe),來(lái)轉(zhuǎn)化轉(zhuǎn)化瀏覽器的 native 調(diào)用。
最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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