iT邦幫忙

1

鼠年全馬鐵人挑戰 WEEK 25:Appium 自動化測試 - 第六集

              Photo on kobiton.com


前言

在 APP 自動化測試的一、二集
分別介紹了 安裝 Appium 與 Appium Desktop

在三到五集的文章中小弟花了一點時間介紹了 Appium Desktop
使用 Mac 與 Windows 的作業系統 操作了 Android 與 iOS 的真機與模擬器
有興趣的大哥大姐可以再自行斟酌觀看

小弟將藉由前幾週所介紹過的內容來分享這週的內容
而這週所要分享的內容是撰寫程式來自動化執行手機應用程式


執行 Appium Server

啟動 Appium

完成 "APP 自動化測試 - 第一集" 中所介紹的 "安裝 appium"
如果大哥大姐還沒過第一篇的話 也沒關係
為了方便 小弟就直接在這邊列出從無到有的執行方式
如果想要看更多的步驟說明可以再自行觀看
文章連結 : APP 自動化測試 - 第一集

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"    # 安裝 homebrew
$ brew install node                    # 安裝 node
$ mkdir appium_demo && cd appium_demo  # 新增專案資料夾
$ npm init -y                          # 初始文件
$ npm install appium                   # 安裝 appium

package.json 文件中的 script 加上 "appium": "appium"
接著執行 $ npm run appium

此時 Appium 將顯示以下消息確認已經成功啟動

[Appium] Welcome to Appium v1.18.0
[Appium] Appium REST http interface listener started on 0.0.0.0:4723

預設的 port 為 4723 如果想要更改 port
可以使用 -p 進行更改 例如 appium -p 5000

如果想要結束可以透過 control+C 來關閉 Appium Server


建立測試執行檔

新增一份 index.js 的檔案在 appium_demo 專案底下
並撰寫測試腳本 (以下腳本僅供參考)

小弟使用的是 Android 真機的內建計算機
測試腳本的內容為 點擊 1+1= 並驗證計算結果應該為 2

// javascript

const wdio = require("webdriverio");
const assert = require("assert");

const opts = {
    path: '/wd/hub',
    port: 4723,
    capabilities: {
        platformName: "Android",
        platformVersion: "10",
        deviceName: "R58N12607JM",
        appPackage: "com.sec.android.app.popupcalculator",
        appActivity: "com.sec.android.app.popupcalculator.Calculator",
        automationName: "UiAutomator2"
    }
};

async function main() {
    const client = await wdio.remote(opts);

    const one = await client.$('//android.widget.Button[@content-desc="1"]');
    const plus = await client.$('//android.widget.Button[@content-desc="加號"]');
    const result = await client.$('android.widget.TextView')
    await one.click();
    await plus.click();
    await one.click();
    const value = await result.getText();
    assert.equal(value, '2');

    await client.deleteSession();
}

main();

安裝 webdriverio

webdriverio 就跟之前介紹過的 Selenium WebDriver 很像
只是差別在於這次的使用對像是 mobile 不是網頁瀏覽器
接下來要做的事情是在專案中 安裝 webdriverio
$ npm install webdriverio

而 Appium Server 也有相對應的 driver

Platform Driver Platform Versions Appium Version Driver Version
iOS XCUITest 9.3+ 1.6.0+ All
iOS UIAutomation 8.0 to 9.3 All All
Android Espresso ?+ 1.9.0+ All
Android UiAutomator2 ?+ 1.6.0+ All
Android UiAutomator 4.3+ All All
Mac Mac ?+ 1.6.4+ All
Windows Windows 10+ 1.6.0+ All

想了解更多可至官網查看更多資訊 Appium 官網 : Status - Appium

opts

上面程式中 opts object 的內容為手機應用程式的相關資訊
在前三週的內容都有介紹過 Android 與 iOS 的配置
如果還沒看過的大哥大姐可以參考一下如何使用

function main()

上面程式中 main function 的內容為自動化測試的腳本
小弟是使用 JavaScript WebdriverIO 進行撰寫
相關的操作也是透過 Javascript (WebdriverIO) 官方網站查詢語法

而 Appium 提供的程式語言相當的多樣
除了 JavaScript 外還有其他的程式語言

Language Support Documentation
Java All javadoc.io
Python All selenium-python.readthedocs.io
Javascript (WebdriverIO) All
Javascript (WD) All github.com
Ruby All www.rubydoc.info
PHP All github.com
C# All github.com

想了解更多可至官網查看更多資訊 Appium 官網 : Status - Appium


執行程式

在完成上述所有操作後
我們就可以開啟 "APP 自動化測試 - 第二集" 中所介紹的 "安裝 appium desktop"
確認該輸入的設定值已完成輸入 即可點擊 Start Server 進入 Log 頁面


接著就可以下指令來完成自動化測試
$ node index.js

下面影片的過程中 小弟是沒有觸碰螢幕的
全程 都是交給 Appium 來進行操作

測試完成後也可以到 Appium Server Log 來查看執行結果


結尾

以上是小弟這週的分享內容
主要是結合前幾篇介紹到的東西
來達到透過 Appium 自動化測試的效果

如果有疑問或是有錯誤,還請各位大哥大姐提點。
小弟將繼續往下週邁進。 ─=≡Σ((( つ•̀ω•́)つ

另外如果有想要了解什麼的話 也歡迎在下方留言
讓小弟知道 我缺了什麼或是哪邊沒有說明清楚


參考文件:

官方網站

相關文章


尚未有邦友留言

立即登入留言