基于WebDriverAgent + Cucumber的自動化測試框架

? ? ? ? 前段時間由于所在項目需要對移動設備進行測試,所以就有了去研究針對移動設備自動化測試工具想法。通過對目前比較主流的第三方的測試框架進行搜索發現,現在最主流的測試框架無外乎Appium 和 WebDriverAgent。最終選擇了后者作為我們的測試框架,具體原因如下:

1.同時支持模擬器和真機。

2.實現了大部分的WebDriver spec。

3.支持USB,設備不需要聯網。

4.提供了Inspector,有了這個就可以方便的找到界面上的元素。

5.和Xcode協同工作,讓測試用例的編寫和執行更為方便。

6.可以輕松的實現模擬用戶使用流程。

7.支持原生和非原生App。

? ? ? 較之Appium而言,WebDriverAgent最大的短板是只支持IOS,不支持Android設備的測試。但Appium對跨平臺的支持的問題多也是眾所周知的, 誰用誰知道^_^。


? ? ? 上面說了這么多,下面就讓我們說說怎么搭建測試環境。由于我們使用Xcode來啟動webDriverAgent,所以以下準備工作必不可少。

1.下載Xcode ,最好是8.0以上的。

2.下載webDriverAgent 到本地。

3.下載Jwda,這里面有一些比較common的action在里面。

4.下載安裝FBSimulatorControl,這個不是必須但是建議下載,因為后面會用到。

? ? ? 用Xcode打開webDriverAgent. 找到WebDriverAgentRunner->UITestingUITests.m,運行testRunner,然后就可以看到如下圖1所示內容,simulator啟動成功。

圖1

? ? ? 同時在上圖1里面可以看到ServerURL信息,通過這個URL加上一些Status或者Inspector信息,我們就能很直觀的看到一些simulator上的元素以及狀態信息。

http://10.205.21.123:8100/status ? ?/*查看狀態信息*/

http://10.205.21.123:8100/Inspector /*查看Inspector*/

? ? ? 接下來用Intellij或者Eclipse打開Jwda工程(以下是以Instllij為例)。在DeviceConfig文件中可以看到待測試設備的信息,以及一些配置信息。也包括上面提到的FBSimulatorControl的信息,如果沒有安裝編譯時會報錯。接下來按如下步驟操作

1.在pom.xml 中添加下面的cucumber依賴.

<dependency>

? ? ? ?<groupId>info.cukes</groupId>

? ? ? <artifactId>cucumber-core</artifactId>

? ? ? <version>1.2.3</version>

</dependency>

<dependency>

? ? ?<groupId>info.cukes</groupId>

? ? ?<artifactId>cucumber-java</artifactId>

? ? ? <version>1.2.3</version>

</dependency>

<dependency>

? ? ?<groupId>info.cukes</groupId>

? ? <artifactId>cucumber-junit</artifactId>

? ? <version>1.2.3</version>

</dependency>

待新的依賴加載完成后,在Java下面創建文件夾

1.common存放一些通用的類文件,例如執行文件。

2.stepDefinations 顧名思義,主要是存放一些定義的一些執行步驟。

packagestepDefinations;

importcom.google.gson.JsonObject;

importcommon.JWda;

importcucumber.api.java.Before;

importcucumber.api.java.en.Given;

importorg.junit.After;


public class Demo {

public static JWda Instance;

@Before

public void stepInit(){

Instance = new JWda();

Instance.cleanKeychain("com.apple.mobilesafari");

Instance.openApp("7p","com.apple.mobilesafari");

}

@After

public void closeBrowser(){

// ? ?Instance.CloseBrowser();

}

@Given("Open baidu from safari")

public void Open_baidu_from_safari() throws Exception{

JsonObject objAddress1 = Instance.findElementsByXpath("http://XCUIElementTypeOther[@label='Address']");

Instance.input(objAddress1.get("ELEMENT").getAsString(),"https://www.baidu.com");

JsonObject objAddress2 = Instance.findElementsByClass("XCUIElementTypeButton","Go");

Instance.tap(objAddress2.get("ELEMENT").getAsString());

}

3.feature 文件夾,用以存放測試用例。

圖2

圖2所示的執行文件中,features是用來指定測試用例的存放位置信息;format用來配置打印測試報告格式及存儲位置;glue告訴編譯器執行步驟的存儲路徑。



? ? ? 至此,環境搭建工作就結束了,后面就是如何創建用例,我們將會在下一篇文章中講解。各位看官可以通過鏈接下載我的Demo . 需要說明的幾處修改:

1.運行之前需要根據本地文件存放路徑對DeviceConfig文件中的信息進行修改。

2.通過fbsimctl list查詢到各種不同型號的simulator的串碼,例如

CNlyguo:phantomjs lyguo$ fbsimctl list

F443C728-3D0F-4253-B7B7-C73F316DEC98 | iPad Pro (12.9 inch) | Shutdown | iPad Pro (12.9-inch) | iOS 10.3 | x86_64

523BF692-3252-41F1-B956-BE9C391A0526 | iPad Air 2 | Shutdown | iPad Air 2 | iOS 10.3 | x86_64

24B252BC-6FB6-4A30-8E67-62B6DDDF9FD2 | iPhone 7 Plus | Booted | iPhone 7 Plus | iOS 10.3 | x86_64



在此對提供Jwda的小伙伴致以特別感謝。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容