selenium工作原理總結(jié)
之前用python的第三方庫selenium,搭配unittes,HTMLTestRunner,jenkins來進(jìn)行自動(dòng)化測試,大概的流程就是找元素,操作元素,獲取結(jié)果進(jìn)行比較,其中有很多api可以使用,但是它的工作原理是怎么樣的呢?先來看一張圖。

客戶端:就是我們的各種語言,python,java,用來發(fā)起請求的
webdriver協(xié)議:實(shí)質(zhì)上就是一種http協(xié)議,但是它基于一種嚴(yán)格的json協(xié)議JSON Wire protocol
瀏覽器驅(qū)動(dòng):各種瀏覽器都有對應(yīng)的驅(qū)動(dòng),比如谷歌的chromedriver.exe、火狐的geckodriver.exe、IE的IEDriverServer.exe
過程如下:
1.運(yùn)行用python寫好的selenium腳本,它會(huì)像web service中發(fā)送一個(gè)http請求
2.瀏覽器驅(qū)動(dòng)中的web service 會(huì)根據(jù)這個(gè)請求生成對應(yīng)的js腳本,因?yàn)椴煌臑g覽器,相同的操作生成的js腳本會(huì)有所不同,因此不同的瀏覽器要有不同的驅(qū)動(dòng)
3.js腳本驅(qū)動(dòng)瀏覽器,產(chǎn)生各種操作,并返回給web service
4.web service將結(jié)果通過http響應(yīng)的形式返回給客戶端
必須指出的是:
1.在WebDriver中為了給用戶以更明確的反饋信息,提供了更細(xì)化的http響應(yīng)狀態(tài)碼,比如:
7: NoSuchElement
11:ElementNotVisible
200:Everything OK
2.返回值類似于{ “sessionid”:123, “status” : 0, “value” : {“element” : “123422”}},這可能是一個(gè)查找元素的返回(get_element_by_id),因?yàn)閹в衧essionid,因此grid可以實(shí)現(xiàn)分布式,操作多個(gè)瀏覽器
3.只要語言實(shí)現(xiàn)了webdriver協(xié)議就可以,所以同一個(gè)瀏覽器的驅(qū)動(dòng)就即可以處理Java語言的腳本,也可以處理Python語言的腳本了。
其實(shí)這個(gè)和之前說的appium的原理一樣,都是用到了webdriver協(xié)議來發(fā)送請求,獲取響應(yīng),也和語言無關(guān),但是不同的是appium service會(huì)生成bootstrap.js/bootstrap.jar,并將其注入到device中來驅(qū)動(dòng)其中的uiautomator/uiautomation,以此來達(dá)到驅(qū)動(dòng)device的目的,而selenium則使用js來驅(qū)動(dòng)。
posted on 2020-08-09 16:46 www.blender-3d.cn 閱讀(150) 評論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號