天天看點

Mac 搭建Appium自動化測試環境

Mac 搭建Appium自動化測試環境

    • 環境搭建清單
    • 通用環境
        • Ⅰ 安裝 Homebrew
        • Ⅱ 安裝 Node & NPM
        • Ⅲ 安裝 JDK
        • Ⅳ 安裝 Carthage
        • Ⅴ 安裝 Appium
        • Ⅵ 安裝 Appium Doctor
    • IOS
        • Ⅶ 安裝Xcode和模拟器
        • Ⅷ 安裝 libimobiledevice & ideviceinstaller
        • Ⅸ 安裝 ios-deploy
        • Ⅹ 安裝 ios_webkit_debug_proxy
        • Ⅺ iOS真機手動配置
    • Android 環境
        • Ⅻ 安裝 android-sdk
        • XIII 安裝 build-tools
        • XIV 安裝 platform-tools
        • XV 安裝 emulator
    • XVI 運作測試代碼
    • XVII 問題解決
    • 參考

環境搭建清單

  • 通用環境
    • Homebrew
    • Node & NPM
    • JDK
    • Carthage
    • Appium
    • Appium Doctor
  • iOS 環境
    • Xcode
    • ios-deploy
    • ideviceinstaller & libimobiledevice
    • ios_webkit_debug_proxy
  • Android 環境
    • android-sdk
    • platform-tools
    • build-tools
    • emulator

通用環境

Ⅰ 安裝 Homebrew

Homebrew是一個包管理軟體,它可以使我們更容易地安裝其他一些軟體,終端輸入安裝:

如果安裝失敗(網速不行等。。),可以打開網址:https://raw.githubusercontent.com/Homebrew/install/master/install

将其内容儲存為

homebrew.txt

(連結: 下載下傳 提取碼:

8htr

),然後終端輸入:

/usr/bin/ruby homebrew.txt
           

此步驟還順帶安裝了Xcode指令行工具。

Ⅱ 安裝 Node & NPM

Node是一個javascript運作時環境,npm是節點包管理器。我們需要這些,因為Appium是一個節點應用程式。在終端中,輸入以下指令(此指令也将安裝npm):

brew install node
           

Ⅲ 安裝 JDK

下載下傳 Java jdk ,按步驟安裝,安裝完成後需要在

.bash_profile

設定

JAVA_HOME

,設定之前你可以通過下邊的指令檢視Java的安裝路徑,terminal輸入:

/usr/libexec/java_home --v
           

輸出路徑:

/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home

通過

vim

編輯

.bash_profile

檔案,終端輸入:

vim ~/.bash_profile
           

i

鍵進入編輯模式,移動到最下邊加入如下兩行(路徑為之前檢視的):

# [改為你自己的java_home路徑]
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
           

添加後按

Esc

按鍵,輸入

:wq

儲存并退出編輯。輸入使其生效(或重新開機終端):

source  ~/.bash_profile
           

Ⅳ 安裝 Carthage

Carthage是一個依賴管理器,

WebDriverAgent

需要它,終端輸入:

brew install carthage
           

Ⅴ 安裝 Appium

Appium(Version 1.15.1)是一個用于本地、混合和移動web應用程式的開源測試自動化架構。它使用WebDriver協定驅動iOS、Android和Windows mobile應用程式。終端安裝server版輸入:

# 安裝 server 版
npm install -g appium
           

預設安裝最新的版本,如果想安裝指定的版本:

npm install -g [email protected].7.2
           

解除安裝 Appium:

npm uninstall -g appium
npm cache clean --force
           

安裝桌面版(因為桌面版友善元素定位),下載下傳 相應的版本進行安裝(安裝兩種方式,友善使用)。

Ⅵ 安裝 Appium Doctor

Appium doctor是一個小型軟體,它檢查Appium成功運作的所有(幾乎所有)前提條件。終端輸入:

npm install -g appium-doctor
           

appium-doctor的輸出應該是這樣的:

Mac 搭建Appium自動化測試環境

IOS

Ⅶ 安裝Xcode和模拟器

啟動Mac應用程式商店并下載下傳/安裝Xcode(Version 10.1)。安裝之後,啟動Xcode并選擇

Xcode > Preferences > Components

來安裝可能想要測試的模拟器。

如果已經安裝過xcode,appium-doctor提示未安裝,則運作指令即可:

sudo xcode-select -r

Tips

:

# 檢視已啟動的模拟器udid
xcrun simctl list | grep '(Booted)'  
# 列出所有裝置,包括真機、模拟器、mac
instruments -s devices 
#錄像 
xrecord --quicktime --list
xrecord --quicktime --name="iPhone" --out="/Users/blah/video/iphone.mp4" --force
           

模拟器相關指令參考:這裡

Ⅷ 安裝 libimobiledevice & ideviceinstaller

libimobiledevice

是一個跨平台的軟體庫,支援 iPhone®, iPod Touch®, iPad® and Apple TV® 等裝置的通訊協定。不依賴任何已有的私有庫,不需要越獄。應用軟體可以通過這個開發包輕松通路裝置的檔案系統、擷取裝置資訊,備份和恢複裝置,管理 SpringBoard 圖示,管理已安裝應用,擷取通訊錄、日程、備注和書簽等資訊,使用 libgpod 同步音樂和視訊。

ideviceinstaller

是一個與iOS裝置的installation_proxy互動的工具,允許安裝、更新、解除安裝、存檔、還原和列舉已安裝或存檔的應用程式。此工具用于在真機上運作測試,預設是都安裝的。

brew install libimobiledevice --HEAD   # 安裝最新的更新,支援 iOS 10
brew install ideviceinstaller  # 僅在 iOS9工作
           

如果安裝時遇到: “invalid active developer path” 則運作:

xcode-select --install
sudo xcode-select -r
           

問題

dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib Referenced from:

/usr/local/opt/libimobiledevice/lib/libimobiledevice.6.dylib Reason: image not found

如果遇到如上錯誤,則先解除安裝

ideviceinstaller 和 libimobiledevice

brew uninstall ideviceinstaller

,

brew uninstall libimobiledevice

),然後再重安裝即可

Tips

:

  1. 擷取裝置的udid
    idevice_id --list  	# 略寫為 -l 顯示目前所連接配接裝置的 udid
    idevice_id -l      # 顯示目前所連接配接的裝置[udid],包括 usb、WiFi 連接配接
    instruments -s devices  # 列出裝置包括模拟器、真機及 mac 電腦本身
    ideviceinfo   #  可以在傳回的資料中找到 udid
    # 蘋果手機 safari打開網址http://fir.im/udid 就看到了	
               
  2. 安裝應用
    xxx.ipa為應用在本地的路徑
    ideviceinstaller -i apppath # 安裝apppath下的app
    ideviceinstaller -u [udid] -i [xxx.ipa] # 給指定連接配接的裝置安裝應用
               
  3. 解除安裝應用
    bundleId為應用的包名
    ideviceinstaller -u [udid] -U [bundleId] # 給指定連接配接的裝置解除安裝應用
               
  4. 檢視裝置已安裝的應用
    ideviceinstaller -l  #列出手機上所有使用者安裝的app
    運作某個app
    idevicedebug run 'APP_BUNDLE_ID'  # 可以直接launch某個app,當然,這個app必須是你通過development證書build到手機上的才行
    ideviceinstaller -u [udid] -l                   # 指定裝置,檢視安裝的第三方應用
    ideviceinstaller -u [udid] -l -o list_user      # 指定裝置,檢視安裝的第三方應用
    ideviceinstaller -u [udid] -l -o list_system    # 指定裝置,檢視安裝的系統應用
    ideviceinstaller -u [udid] -l -o list_all       # 指定裝置,檢視安裝的系統應用和第三方應用
               
  5. 擷取裝置資訊
    ideviceinfo -u [udid]                       # 指定裝置,擷取裝置資訊
    ideviceinfo -u [udid] -k DeviceName         # 指定裝置,擷取裝置名稱:iPhone6s
    idevicename -u [udid]                       # 指定裝置,擷取裝置名稱:iPhone6s
    ideviceinfo -u [udid] -k ProductVersion     # 指定裝置,擷取裝置版本:10.3.1
    ideviceinfo -u [udid] -k ProductType        # 指定裝置,擷取裝置類型:iPhone8,1
    ideviceinfo -u [udid] -k ProductName        # 指定裝置,擷取裝置系統名稱:iPhone OS
               
  6. 其他系統檔案資訊
    idevicescreenshot # 截圖
    ideviceinfo  # 擷取裝置所有資訊
    idevicesyslog  # 擷取裝置日志
    idevicecrashreport -e test  # 擷取裝置 crashlog,test 是檔案夾需建立
    idevicediagnostics  restart  # (shutdown、sleep)管理裝置狀态 - 重新開機、關機、睡眠等
               

Ⅸ 安裝 ios-deploy

ios-deploy

同樣是一個不需要用Xcode安裝和調試應用的指令行工具。需要一個有效的開發者證書,需要 Xcode 7以上的版本。終端輸入:

brew install ios-deploy
           

Tips

:

  1. 安裝應用
    ios-deploy -c  # 檢視目前連結的裝置,擷取udid
    # xxx.app為 Xcode 編譯後的應用安裝包路徑
    ios-deploy --id [udid] --bundle [xxx.app] # 給指定應用安裝應用
               
  2. 解除安裝應用
  3. 檢視裝置已安裝的應用
    ios-deploy --id [udid] --list_bundle_id     # 檢視裝置安裝的所有應用,包括系統應用和第三方應用
    ios-deploy --id [udid] --exists --bundle_id     # 指定裝置檢查指定應用是否已經安裝
               

Ⅹ 安裝 ios_webkit_debug_proxy

Appium使用

ios_webkit_debug_proxy

這個工具在真機上通路

web view

。在終端中,運作以下指令:

brew install ios-webkit-debug-proxy
           

至此iOS環境搭建完畢!!!隻适用于模拟器,真機的話還需要配置。

Ⅺ iOS真機手動配置

檢視

appium

的安裝位置,正常npm安裝的位置應該在

/usr/local/bin/appium

which appium
# /usr/local/bin/appium
           

指令行安裝的appium一般安裝在

/usr/local/bin/appium

下,

WebDriverAgent

将會在路徑:

/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/

下;如果是桌面版的,

WebDriverAgent

的路徑是:

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/

# 指令行版
cd  /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/
# 桌面版
cd /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/
           

首先檢視路徑(

/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent

)下有沒有

WebDriverAgent.xcodeproj

(有的話跳過下邊,直接用Xcode打開即可),沒有的話直接打開終端運作如下指令搭建項目:

cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/
mkdir -p Resources/WebDriverAgent.bundle
./Scripts/bootstrap.sh -d
           

然後用Xcode 打開

WebDriverAgent.xcodeproj

,在 “General” 下将

WebDriverAgentLib

WebDriverAgentRunner

設定成 “Automatically manage signing” 并在 “Team” 中選擇你的開發團隊 ;

Mac 搭建Appium自動化測試環境

Xcode可能無法為WebDriverAgentRunner目标建立配置檔案(Failed to create…)

Mac 搭建Appium自動化測試環境

這需要手動更改目标的

bundle id

,方法是進入“Build Settings”選項,更改“Product bundle Identifier”的值使Xcode将接受,預設為

com.facebook.WebDriverAgentRunner

Mac 搭建Appium自動化測試環境

傳回 “General” 選項,看到對于檔案

WebDriverAgentRunner

的配置檔案已經建立成功了

Mac 搭建Appium自動化測試環境

最後,

build

項目:

通過Xcode擷取

udid

Mac 搭建Appium自動化測試環境
Mac 搭建Appium自動化測試環境
# 利用ios-deploy擷取,其他參考上邊的介紹
ios-deploy -c 
cd /usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=<udid>' test
           

即:

xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=1A7A0E9D-98AE-4230-BC92-13F66901FCBA' test
           

最終看到這樣輸出就是成功了:

Test Suite ‘All tests’ started at 2017-01-23 15:49:12.585

Test Suite ‘WebDriverAgentRunner.xctest’ started at 2017-01-23 15:49:12.586

Test Suite ‘UITestingUITests’ started at 2017-01-23 15:49:12.587

Test Case ‘-[UITestingUITests testRunner]’ started.

t = 0.00s Start Test at 2017-01-23 15:49:12.588

t = 0.00s Set Up

Mac 搭建Appium自動化測試環境

驗證是否安裝成功,確定手機和電腦連接配接同一個WiFi(同一區域網路内):

export DEVICE_URL='http://<device IP>:8100'
export JSON_HEADER='-H "Content-Type: application/json;charset=UTF-8, accept: application/json"'
curl -X GET $JSON_HEADER $DEVICE_URL/status
           

将會看到類似的輸出:

{
      "value" : {
        "state" : "success",
        "os" : {
          "name" : "iOS",
          "version" : "10.2"
        },
        "ios" : {
          "simulatorVersion" : "10.2",
          "ip" : "192.168.0.7"
        },
        "build" : {
          "time" : "Jan 23 2017 14:59:57"
        }
      },
      "sessionId" : "8951A6DD-F3AD-410E-A5DB-D042F42F68A7",
      "status" : 0
    }
           
Mac 搭建Appium自動化測試環境

然後會看到真機上安裝了

WebDriverAgentRunner

應用:

Mac 搭建Appium自動化測試環境

安裝成功後運作如果遇到這樣的錯誤:

2017-01-24 09:02:18.358 xcodebuild[30385:339674] Error Domain=com.apple.platform.iphoneos Code=-12 "Unable to launch com.apple.test.WebDriverAgentRunner-Runner" UserInfo={NSLocalizedDescription=Unable to launch com.apple.test.WebDriverAgentRunner-Runner, NSUnderlyingError=0x7fa839cadc60 {Error Domain=DTXMessage Code=1 "(null)" UserInfo={DTXExceptionKey=The operation couldn’t be completed. Unable to launch com.apple.test.WebDriverAgentRunner-Runner because it has an invalid code signature, inadequate entitlements or its profile has not been explicitly trusted by the user. : Failed to launch process with bundle identifier 'com.apple.test.WebDriverAgentRunner-Runner'}}}
2017-01-24 09:02:18.358 xcodebuild[30385:339674] Error Domain=IDETestOperationsObserverErrorDomain Code=5 "Early unexpected exit, operation never finished bootstrapping - no restart will be attempted" UserInfo={NSLocalizedDescription=Early unexpected exit, operation never finished bootstrapping - no restart will be attempted}

Testing failed:
    Test target WebDriverAgentRunner encountered an error (Early unexpected exit, operation never finished bootstrapping - no restart will be attempted)
           

問題是該應用在裝置上不受信任。如果你手動嘗試在裝置上運作WebDriverAgent應用,你會看到一個彈出消息:

Mac 搭建Appium自動化測試環境

你可以通過Settings => General =>Device Management 來信任開發者并允WebDriverAgentRunner應用程式運作。

至此iOS真機運作環境配置完畢,你可以進行真機測試了~~

Tips:

真機運作必須添加這兩個參數:

{	  
      # xcodeOrgId 類似:TEST INTERNATIONAL
      "xcodeOrgId": "<Team ID>",
      # xcodeSigningId是一個由Apple生成的唯一的10個字元的字元串,類似 6387P24J3L
      "xcodeSigningId": "iPhone Developer"
    }
           

這兩個字段擷取:

Mac 搭建Appium自動化測試環境

Android 環境

安裝Android環境可以使用直接使用 Android studio來安裝,但是會下載下傳好多無用的東西,占用記憶體。可以選擇下邊的

Command line tools only

通過指令行安裝(指令行安裝可能會失敗,多試幾次就好)。這裡隻介紹用指令行安裝的方法。

該方法會安裝在

/usr/local/Caskroom/android-sdk/4333796/

目錄下

4333796

為android-SDK的版本号

該目錄下要存在 tools、platform-tools、build-tools 三個檔案夾,否則這個環境還是會存在問題的; 如果沒有,需要運作安裝、或移動 platform-tools 檔案夾,可以将

/usr/local/Caskroom/android-platform-tools/29.0.5/ 目錄下的 platform-tools 檔案夾複制過來

Ⅻ 安裝 android-sdk

終端運作:

brew cask install android-sdk
           
Mac 搭建Appium自動化測試環境

XIII 安裝 build-tools

XIV 安裝 platform-tools

  • sdkmanager 安裝(

    sdkmanager

    詳細指令參考:這裡 )
    # 使用sdkmanager 安裝
    sdkmanager  --install  "platform-tools" "platforms;android-29"
               
  • 非 sdkmanager 安裝
    # 如果上邊的失敗,則使用brew 安裝(此安裝完成後需要将platform-tools移
    # 動到 /usr/local/Caskroom/android-sdk/4333796/ 下)
    brew cask install android-platform-tools
    # 安裝完成後移動
    mv /usr/local/Caskroom/android-platform-tools/29.0.5/platform-tools/  /usr/local/Caskroom/android-sdk/4333796/
               
Mac 搭建Appium自動化測試環境

完成後檢視:

cd /usr/local/Caskroom/android-sdk/4333796/ && ls
# 将會看到  tools、platform-tools、build-tools 三個檔案夾
           

然後在在

~/.bash_profile

中配置

ANDROID_HOME

,終端輸入:

vim ~/.bash_profile

,然後點選

i

鍵進入編輯模式,添加如下:

export ANDROID_HOME=/usr/local/Caskroom/android-sdk/4333796
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
           

然後運作:

source ~/.bash_profile
           

再次執行 appium-doctor 檢查 appium 環境,如下:

Mac 搭建Appium自動化測試環境

至此Android環境搭建完成了!!!真機可直接運作。

如果需要使用 android 模拟器,則需要第

XIV

步安裝模拟器

XV 安裝 emulator

首先需要下載下傳鏡像檔案:

# 檢視所有可安裝的元件
sdkmanager --list --verbose
# 更新元件
sdkmanager --update
# 安裝
sdkmanager --install "system-images;android-28;google_apis;x86"
           

然後下載下傳硬體加速器:

下一步建立模拟器:

avdmanager

詳細介紹參考:這裡

avdmanager create avd -n test -k "system-images;android-28;google_apis;x86" -b x86 -c 100M -d 7 -f
           

最後運作模拟器:

# test 為上邊建立模拟器的名稱(-n test)
emulator -avd  test
# 或者
emulator  @test
           

Tips:

啟動時如果如報這個錯誤

PANIC: Missing emulator engine program for 'x86' CPU.

則說明不能使用tools下的emulator,直接選擇

/usr/local/Caskroom/android-sdk/4333796/emulator/emulator @test

啟動嘗試(嘗試tools目錄下的emulator和emulator目錄下的哪個可以用哪個)
Mac 搭建Appium自動化測試環境

XVI 運作測試代碼

此處隻簡單示範Python代碼,詳情參考:這裡

安裝Python版的用戶端:

pip install appium-python-client
           

如果提示:

'pip: command not found'

,根據自己Python的版本運作指令(Python 3的話後邊改為3):

brew install [email protected]
           

這樣安裝後運作python腳本需要使用:

python2 test_android.py

運作

test_android.py

腳本(測試電腦):

真機還是模拟器自行切換注釋代碼!!!

腳本下載下傳

# coding=utf-8
import unittest
from appium import webdriver
import time
import os


class AndroidSimpleTest(unittest.TestCase):
    def setUp(self):
        calculator_desired_caps = {
                'platformName': 'Android',
                'platformVersion': '9.0',
                # emulator
                'deviceName': 'emulator-5554',
                'appPackage': 'com.android.calculator2',
                'appActivity': 'com.android.calculator2.Calculator'
                # real device
                # 'deviceName': '520381b347dd148b',
                #'appPackage': 'com.sec.android.app.popupcalculator',
                #'appActivity': 'com.sec.android.app.popupcalculator.Calculator'
            }
        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', calculator_desired_caps)
    
    def tearDown(self):
        self.driver.quit()
    
    def test_calculator(self):
        # real device
        #self.driver.find_element_by_accessibility_id("5").click()
        #self.driver.find_element_by_accessibility_id("Plus").click()
        #self.driver.find_element_by_accessibility_id("6").click()
        #self.driver.find_element_by_accessibility_id("Equal").click()
        #self.assertEqual(self.driver.find_element_by_id("txtCalc").text, "11")
        
        # ************
        # emulator
        self.driver.find_element_by_id("digit_5").click()
        self.driver.find_element_by_accessibility_id("plus").click()
        self.driver.find_element_by_id("digit_6").click()
        self.driver.find_element_by_accessibility_id("equals").click()
        self.assertEqual(self.driver.find_element_by_id("result").text, "11")
    
    @unittest.skip("skip")
    def test_something(self):
        pass

if __name__ == '__main__':
    unittest.main()

           

運作

test_ios.py

腳本(TestApp ):

應用于iOS模拟器!!!

TestApp 下載下傳,腳本下載下傳

# coding=utf-8
import unittest
from appium import webdriver
import time
import os


class IosSimpleTest(unittest.TestCase):
    def setUp(self):
        desired_caps = {
			  "platformName": "iOS",
			  "platformVersion": "12.1",
			  "deviceName": "iPad Pro",
			  "noReset": True,
			  "udid": "1A7A0E9D-98AE-4230-BC92-13F66901FCBA",
			  "orientation": "LANDSCAPE",
              "connectHardwareKeyboard":True,
			  "app": "/Users/XXXX/Downloads/TestApp.app"
			}
        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    def tearDown(self):
        self.driver.quit()

    def test_something(self):
        input_field_A = self.driver.find_element_by_accessibility_id("IntegerA")
        input_field_A.clear()
        input_field_A.send_keys('8')
        input_field_B = self.driver.find_element_by_accessibility_id("IntegerB")
        input_field_B.clear()
        input_field_B.send_keys('6')
        self.driver.find_element_by_accessibility_id("ComputeSumButton").click()
        answer = self.driver.find_element_by_accessibility_id("Answer")
        # self.assertEqual(answer.text, "14")
        self.assertEqual(answer.get_attribute("value"), "14")
        time.sleep(5)


if __name__ == '__main__':
    unittest.main()

           

iOS真機運作

test_ios_real.py

腳本:

腳本下載下傳:這裡,運作前確定

build

程序存在(或者直接運作前執行該指令):

cd /usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent && xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=<udid>' test
           
# coding=utf-8
import unittest
from appium import webdriver
import time
import os


class IosSimpleTest(unittest.TestCase):
    def setUp(self):
        desired_caps = {
			  "platformName": "iOS",
			  "platformVersion": "11.2",
			  "deviceName": "Red’s iPad (2)",
			  "noReset": True,
			  "udid": "34861df52360e9243cfd7acb75801e1d58d6746f",
			  "orientation": "LANDSCAPE",
              "xcodeOrgId":"TEST INTERNATIONAL",
              "xcodeSigningId":"6387P24J3L",
			  "app": "/Users/XXXX/Desktop/test_ios/your.app"
			}
        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    def tearDown(self):
        self.driver.quit()

    def test_something(self):
        input_field = self.driver.find_elements_by_ios_predicate('type == "XCUIElementTypeTextField"')[1]
        input_field.clear()
        time.sleep(2)
        input_field.send_keys('[email protected]')
        password=self.driver.find_element_by_ios_predicate('type=="XCUIElementTypeSecureTextField"')
        password.clear()
        time.sleep(2)
        password.send_keys('[email protected]')
        password.send_keys('\n')
        time.sleep(10)


if __name__ == '__main__':
    unittest.main()


           

Tips:

# 檢視裝置名(deviceName)
adb devices 
# 檢視模拟器版本号(platformVersion)
adb shell getprop ro.build.version.release
# 檢視appPackage、appActivity,運作指令時要確定打開了應用
# 例如:首先打開電腦,然後運作指令即可擷取到(以 / 隔開,前邊appPackage,後邊 appActivity )
# 如果是Windows,則把 grep 換成 findstr 
adb shell dumpsys window windows | grep "Current" 

# **********iOS************
# 安裝 app
xcrun simctl install booted /Users/XXXX/Downloads/TestApp.app/
# 擷取名稱和udid(先啟動模拟器,再運作指令)
xcrun simctl list | grep "(Booted)"
           

其他

adb

相關指令檢視:這裡

其他

xcrun simctl

相關指令檢視:這裡

XVII 問題解決

問題一

“.android/repositories.cfg could not be loaded.”

這個問題是因為缺少

repositories.cfg

檔案,直接運作

mkdir -p .android && touch ~/.android/repositories.cfg

即可

問題二

“PANIC: can`t find avd system path”

檢查SDK目錄是否有至less4個目錄: emulator , platforms , platform-tools , system-images

缺少哪個安裝哪個,安裝方法:

sdkmanager --install “emulator”

sdkmanager --install “platforms;android-26”

sdkmanager --install “system-images;android-26;google_apis;x86”

參考:這裡

問題三

“library not found at …/emulator/lib64/qt/lib”

需要用tools下的emulator啟動虛拟裝置即可(嘗試tools目錄下的emulator和emulator目錄下的哪個可以)

問題四

“Original error: Could not find ‘adb’ in PATH”

這個問題首先確定ANDROID_HOME設定正确的話(使用server版啟動沒問題),啟動 Appium 桌面版引起的,因為正常安裝後啟動需要在桌面版配置JAVA_HOME 和 ANDROID_HOME,配置後即可解決

Mac 搭建Appium自動化測試環境

問題五

“Original error: Error Domain=com.facebook.WebDriverAgent Code=1 “Keyboard is not present” UserInfo={NSLocalizedDescription=Keyboard is not present}” mac 跑模拟器的時候,當定位到了輸入框,但是無法輸入内容,會報如上到錯誤,這是由于模拟器的鍵盤沒有被彈出導緻的

兩種解決方案:

一是 直接在 desired_caps 中添加

"connectHardwareKeyboard":True

這一配置即可,配置參考:這裡

二是 打開APP,定位到輸入框,然後在鍵盤上用快捷鍵

command+shift+k

,看到鍵盤彈出即可

參考

  • iOS真機運作

繼續閱讀