掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
您可以使用多個(gè)編程語(yǔ)言編寫(xiě)測(cè)試(目前支持的語(yǔ)言有Java,Python,Ruby, C#),并且 Selenium 能夠在一個(gè)或多個(gè)瀏覽器中執(zhí)行這些測(cè)試。Selenium最常用的版本是Selenium2和Selenium3。大家可以理解為selenium3是selenium2的升級(jí)版本,主要更新內(nèi)容如下:

成都創(chuàng)新互聯(lián)專注于潁上企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城開(kāi)發(fā)。潁上網(wǎng)站建設(shè)公司,為潁上等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站建設(shè),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
下面我就為大家詳解selenium的兩個(gè)核心問(wèn)題:
1.支持多種語(yǔ)言;
2.可以在多個(gè)瀏覽器中運(yùn)行腳本
Selenium的架構(gòu)可以用下面的圖進(jìn)行概況
藍(lán)色的圖Selenium Language Binding就是我們平時(shí)使用的編碼語(yǔ)言,包括java、python等等。可以看到這些語(yǔ)言并沒(méi)有直接與Browser Drivers進(jìn)行通信,而是通過(guò)了JSON Wire
Protocol,這就是webdriver協(xié)議 ,詳情請(qǐng)參考https://www.w3.org/TR/webdriver/ 。
簡(jiǎn)單的說(shuō)他定義了一套接口規(guī)范,以我們最熟悉的點(diǎn)擊操作為例,他對(duì)應(yīng)的接口協(xié)議是:
POST /session/{session id}/element/{element id}/click
這樣以來(lái),無(wú)論我們編碼使用python代碼來(lái)執(zhí)行點(diǎn)擊操作:
driver.find_element_by_id("").click()
還是以java代碼執(zhí)行點(diǎn)擊操作:
driver.findElement(By.id("")).click();
都會(huì)通過(guò)selenium客戶端的程序?qū)lick操作轉(zhuǎn)化成對(duì)應(yīng)的webdriver協(xié)議。這樣對(duì)于Browser Drivers來(lái)說(shuō)只需要解析具體協(xié)議,而無(wú)需關(guān)注客戶端使用的是哪種代碼了,這就是selenium支持多種語(yǔ)言的原理。
在Browser Drivers中可以看到各個(gè)瀏覽器的driver,這里我們以chromedriver為例進(jìn)行講解。在代碼中直接 new ChromeDriver() 將會(huì)啟動(dòng)一個(gè) ChromeDriver進(jìn)程,ChromeDriver是一個(gè)獨(dú)立的服務(wù),它是 google 為網(wǎng)站開(kāi)發(fā)人員提供的自動(dòng)化測(cè)試接口,它是 selenium 和 chrome瀏覽器進(jìn)行通信的橋梁。chromeDriver解析webdriver協(xié)議,然后根據(jù)解析結(jié)果,調(diào)用與之對(duì)應(yīng)的Remote Debugging協(xié)議來(lái)操控chrome瀏覽器,它可以和瀏覽器內(nèi)核進(jìn)行交互進(jìn)而操控瀏覽器,這里就不對(duì)該協(xié)議進(jìn)行詳細(xì)介紹了,以上就是selenium操控chrome瀏覽器的原理。
以此類推,大家就會(huì)了解為什么使用selenium2和3操控不同的瀏覽器,需要先下載與其對(duì)應(yīng)的瀏覽器driver了。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流