日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Selenium的实现原理,一篇文章讲透彻!

發(fā)布時(shí)間:2024/1/1 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Selenium的实现原理,一篇文章讲透彻! 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Selenium的實(shí)現(xiàn)原理

對(duì)于Selenium而言,V1.0和V2.0版本的技術(shù)方案是截然不同的,V1.0 的核心是Selenium RC,而V2.0 的和核心是WebDriver,可以說(shuō)完全是兩個(gè)東西。

Selenium 1.0的工作原理

Selenium 1.0又稱Selenium RC,其中RC是Remote Control的縮寫(xiě)。Selenium RC利用的原理是:JavaScript代碼可以很方便地獲取頁(yè)面上的renew元素并執(zhí)行各種操作。
但因?yàn)椤巴凑摺?#xff0c;所以要想在測(cè)試用例運(yùn)行中的瀏覽器中,注入JavaScript代碼從而實(shí)現(xiàn)自動(dòng)化的Web操作,Selenium RC就必須“欺騙”被測(cè)站點(diǎn),讓它誤以為被注入的代碼是同源的。
如何實(shí)現(xiàn)欺騙呢?這就是引入Selenium RC Server的根本原因,其中的Http Proxy模塊就是用來(lái)“欺騙”瀏覽器的。Selenium RC的基本模塊如下:
Selenium RC Server,主要包括Selenium Core,Http Proxy和Launcher三部分:

? Selenium Core,是被注入到瀏覽器頁(yè)面的JavaScript函數(shù)集合,用來(lái)實(shí)現(xiàn)界面元素的識(shí)別和操作;
? Http Proxy,作為代理服務(wù)器修改JavaScript的源,以達(dá)到“欺騙”被測(cè)站點(diǎn)的目的;
? Launcher,用來(lái)啟動(dòng)瀏覽器完成Selenium Core的注入和瀏覽器代碼的設(shè)置。

Selenium RC的執(zhí)行流程如下圖:

如果對(duì)軟件測(cè)試有興趣,想了解更多的測(cè)試知識(shí),解決測(cè)試問(wèn)題,以及入門(mén)指導(dǎo),幫你解決測(cè)試中遇到的困惑,我們這里有技術(shù)高手。如果你正在找工作或者剛剛學(xué)校出來(lái),又或者已經(jīng)工作但是經(jīng)常覺(jué)得難點(diǎn)很多,覺(jué)得自己測(cè)試方面學(xué)的不夠精想要繼續(xù)學(xué)習(xí)的,想轉(zhuǎn)行怕學(xué)不會(huì)的, 都可以加入我們
,群內(nèi)可領(lǐng)取最新軟件測(cè)試大廠面試資料和Python自動(dòng)化、接口、框架搭建學(xué)習(xí)資料!

  • 測(cè)試用例通過(guò)基于不同語(yǔ)言的Client Libraries向Selenium RC Server發(fā)送Http請(qǐng)求,要求與其建立連接。
  • 連接建立后,Selenium RC Server的Launcher就會(huì)啟動(dòng)瀏覽器或者重用之前已經(jīng)打開(kāi)的瀏覽器,把Selenium Core(Javascript函數(shù)的集合)加載到瀏覽器頁(yè)面當(dāng)中,并同時(shí)把瀏覽器的代理設(shè)置為Http Proxy。
  • 測(cè)試用例通過(guò)Client Libraries向Selenium RC Server發(fā)送Http請(qǐng)求,Selenium RC Server解析請(qǐng)求,然后通過(guò)Http Proxy發(fā)送JavaScript命令通知Selenium Core執(zhí)行瀏覽器上控件的具體操作。
  • Selenium Core接收到指令后,執(zhí)行操作。
  • 如果瀏覽器收到新的頁(yè)面請(qǐng)求信息,則會(huì)發(fā)送Http請(qǐng)求來(lái)請(qǐng)求新的Web頁(yè)面。由于Launcher在啟動(dòng)瀏覽器時(shí)把Http Proxy設(shè)置成為了瀏覽器的代碼,所以Selenium RC Server會(huì)接收到所有由它啟動(dòng)的瀏覽器發(fā)送的請(qǐng)求。
  • Selenium RC Server接收到瀏覽器發(fā)送的Http請(qǐng)求后,重組Http請(qǐng)求以規(guī)避“同源策略”,然后獲取對(duì)應(yīng)的Web頁(yè)面。
  • Http Proxy把接收的Web頁(yè)面返回給瀏覽器,瀏覽器對(duì)接收的頁(yè)面進(jìn)行渲染。
    Client Libraries,是測(cè)試用例代碼向Selenium RC Server發(fā)送Http請(qǐng)求的接口,支持多種語(yǔ)言,包括Java、C#和Ruby等。
  • Selenium 2.0的工作原理

    Selenium 2.0又稱Selenium WebDriver,它利用的原理是:使用瀏覽器原生的WebDriver實(shí)現(xiàn)頁(yè)面操作。它的實(shí)現(xiàn)方式完全不同于Selenium 1.0。
    Selenium WebDriver是典型的Server-Client模式,Server端就是Remote Server。Selenium WebDriver執(zhí)行流程如下圖所示:
    如果對(duì)軟件測(cè)試有興趣,想了解更多的測(cè)試知識(shí),解決測(cè)試問(wèn)題,以及入門(mén)指導(dǎo),幫你解決測(cè)試中遇到的困惑,我們這里有技術(shù)高手。如果你正在找工作或者剛剛學(xué)校出來(lái),又或者已經(jīng)工作但是經(jīng)常覺(jué)得難點(diǎn)很多,覺(jué)得自己測(cè)試方面學(xué)的不夠精想要繼續(xù)學(xué)習(xí)的,想轉(zhuǎn)行怕學(xué)不會(huì)的, 都可以加入我們
    ,群內(nèi)可領(lǐng)取最新軟件測(cè)試大廠面試資料和Python自動(dòng)化、接口、框架搭建學(xué)習(xí)資料!

  • 當(dāng)使用Selenium 2.0啟動(dòng)瀏覽器Web Brower時(shí),后臺(tái)會(huì)同時(shí)啟動(dòng)基于WebDriver協(xié)議的Web Service作為Selenium的Remote Server,并將其與瀏覽器綁定。綁定完成后,Remote Server就開(kāi)始監(jiān)聽(tīng)Client端的操作請(qǐng)求。
  • 執(zhí)行測(cè)試時(shí),測(cè)試用例會(huì)作為Client端,將需要執(zhí)行的頁(yè)面操作請(qǐng)求以Http Request的方式發(fā)送給Remote Server。該Http Request的body,是以WebDriver Write協(xié)議規(guī)定的JSON格式來(lái)描述需要瀏覽器執(zhí)行的具體操作。
  • Remote Server接收請(qǐng)求后,會(huì)對(duì)請(qǐng)求進(jìn)行解析,并將解析結(jié)果發(fā)送給WebDriver,由WebDriver實(shí)際執(zhí)行瀏覽器的操作。
  • WebDriver可以看做是直接操作瀏覽器的原生組件(Native Component),所以搭建測(cè)試環(huán)境時(shí),通常都需要先下載瀏覽器對(duì)應(yīng)的We
  • 總結(jié)

    以上是生活随笔為你收集整理的Selenium的实现原理,一篇文章讲透彻!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。