章節:自動化基礎篇——Selenium原理初步(第五講)
注:其實所有的東西都是應該先去用,但是工具基本都一樣,底層都是用的最基礎的內容實現的,測試應該做的是:
(1)熟練使用工具,了解各個工具的利弊,達到工具優選、因時因地制宜的目的
(2)讀源碼,理解原理,能夠對開源的源碼進行二次再創造,改編成適合自身產品的工具;或者自己直接編寫適合測試的工具
(3)能夠對測試過程中發生的異常進行分析和定位,對測試結果進行詳細和系統的綜合評定(需要能夠分析定位問題,必須對自身產品了解,但更需要的是對底層代碼和操作系統的深入分析和理解,這才是關鍵)
現在的公司把測試開發和測試分的太開,測試開發就只是開發工具,供所謂的測試使用:兩者應該是結合在一起的,測試必須首先深入理解功能,才能根據功能需求和測試需求自我產出更好的測試工具
主要講解內容及筆記:
一、學習Selenium的原因
項目需要
上圖的邏輯理解:
手機app客戶端向數據庫發起請求,數據獲取到內容后,返回到手機app端,同時網頁端也要同步更新,獲取到數據庫端的指令;反之亦然。
網頁展示及app客戶端需要即時同步溝通,網頁展示及測試相關就需要用到Selenium。
Native Driver:是google做的一個Selenium的簡化版,即android里面的Selenium的簡化版,用於測試手機的本地APP,提供webdriver一樣風格的API。這個必須在編譯的時候生成相對的jar包,如果這個Native Driver的jar包的話,就無法使用Native Driver做自動化測試,局限性比較大,但原理跟Selenium是相似的
下面介紹基本原理:
1、安裝apk到模擬器后,會和Framework框架進行通信,Server會起一個4444的端口,通過這個端口跟FrameWork進行通信,通過這個端口就可以獲取到所有的控件,再根據三中不同的方式(Path、Id以及ClassName)找到控件。
2、客戶端Client的程序需要部署在自動化腳本中,然后你可以自己寫一個Test的測試程序,這個程序作用於AndroidDriver的Client端,給它發指令,然后客戶端就會通過http+jscon的方式訪問模擬器上的Server,進行相應的模擬操作。
二、Selenium原理初探
1、Selenium的簡介:Web端的自動化測試工具,兼容性很好,基於Chrome、火狐、IE等的瀏覽器均可良好使用,
2、下載:在官網頁面上能夠看到以下四個內容
Selenium IDE:一個火狐插件(a FireFox Plugin)
Selenium Server(曾用名:Selenium RC Server)
The Internet Explorer Driver Server
Selenium Client & WebDriver Language Bindings(跟特定語言相關的,建議Java、Python)
推薦使用的是Selenium RC
看看源碼:
1、Server——DriverServlet(核心)
繼承HttpServlet,能夠拿到http的這個request and response,就可以在service函數中設置response的報頭,然后就能夠進行傳輸
(鞏固一下:adb的端口是5037,Selenium的Server的端口是4444)
注:android里面的dumpsys meminfo,內存分析包含四個:total、Rss(物理內存)、Stack內存、Virtual內存
2、Flick——滑動——核心是基於控件
與Robotium的很像,獲取Web的所有Element-->得到坐標點-->調用flick方法進行滑動,參數為elementlocation,xoffset,yoffset,speed
另:SetJsonParameter,即設置Jason的參數,
網絡傳數據的格式:
(1)Json,格式:[{'xxx':xxx, 'xxx':xxx},{...}],其實跟Python的字典比較像,反正就是定義了一個格式,方便你去傳輸和解析,解析的話就是通過一種特殊的格式讓你找到一個字段,然后再去獲取到這個字段的value
(2)SAX:動態解析
(3)xml,格式:都是成對出現的,<xxx></xxx>
(4)ini?應該一般用ini的比較少吧,最近在寫的一個項目用的ini,其他的沒做調研,反正ini是沒法換行
3、LongPressElement(跟Robotium的ClickLongOnScreen方法類似):
基本原理都一樣,都是獲取Element,得到坐標點,調用LongPress方法
如何找Element:(基本原理都類似:傳遞參數,然后找到跟這個參數匹配的,只不過可以通過以下三種方式來獲取到而已)
1、ByXPath
2、ByID
3、ByClassName
4、ByCssSelector
5、ByLinkText
6、ByName
7、ByPartialLinkText
8、ByTagName
核心:坐標與控件交互——找控件,定位坐標,通過對坐標進行操作
三、Selenium演示
寫腳本:
1、初始化
2、testcase
3、after的teardown里面selenium.stop()
網易雲課堂:http://study.163.com/course/courseLearn.htm?courseId=712011#/learn/video?lessonId=878101&courseId=712011
金陽光測試 |
新浪微博:金陽光woody |
網站地址 |
1、百度搜:金陽光測試 2、官網:www.goldensunshine.cc |
微信公眾號 |
|