appium+Python真機運行測試demo的方法


appium+Python真機運行測試demo的方法

 

一,    打開手機的USB調試模式

 

二,    連接手機到電腦

   將手機用數據線連接到電腦,並授權USB調試模式。查看連接的效果,在cmd下運行命令:adb devices查看UDID,如下圖所示:

如果有輸出,就表示連接成功。

 

三,    啟動Appium服務

方法一:cmd命令行啟動

   根據查到的UDID啟動appium服務,運行命令:

#>appium -a 127.0.0.1 -p 4723  –U  6207febc --no-reset

-U 參數后面跟的一串字符就是手機的UDID,這個是通過第二步查到的。

當程序輸出如上圖信息的時候,表示appium啟動成功,此時便可以運行測試腳本了。

 

方法二:appium界面啟動

 

 

四,    測試腳本的編寫及運行

   真機運行的測試腳本與模擬器上幾乎是相同的,就是有些兒配置不太一樣。具體腳本demo如下demo.py:

#! /usr/bin/env python
#coding=utf-8
import os
import time
import unittest
from selenium import webdriver
from lib2to3.pgen2.driver import Driver
from lib2to3.tests.support import driver

PATH=lambda p:os.path.abspath(os.path.join(os.path.dirname(__file__),p))

desired_caps = {}
desired_caps['platformName'] = 'Android'  #設備系統
desired_caps['platformVersion'] = '5.1.2'  #設備系統版本
desired_caps['deviceName'] = 'Lenovo P1c72'  #設備名稱

desired_caps['app'] = PATH('C:\\Users\\LENOVO\\Desktop\\StarZone_V2.0.0.apk') 
#desired_caps['appPackage'] = 'com.xiangchao.starspace'  
#desired_caps['appActivity'] = 'com.xiangchao.starspace.activity.SplashActivity'

#如果設置的是app在電腦上的路徑,則不需要配appPackage和appActivity,同理反之

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)  #啟動app

time.sleep(5)  #啟動app時,需要一定時間進入引導頁,所以必須設置等待時間,不然下面會一直報錯定位不到元素
driver.find_element_by_id('com.xiangchao.starspace:id/skip').click()

driver.quit()

 

另開一個cmd窗口,運行測試腳本(python demo.py)即可。此時服務端就會有輸出,程序在手機上運行。

注:在測試用例運行過程中,正常情況下手機會自動安裝Settings和Unlock,有些手機有兼容性問題,Settings和Unlock程序打不開,所以每次運行腳本都會提示安裝,按提示允許安裝就可以。

 

Appium的Desired Capabilities是擴展了webdriver的Desired Capabilities的,下面的一些通用配置是需要指定的: 

  • automationName:使用哪種自動化引擎。appium(默認)還是Selendroid?
  • platformName:使用哪種移動平台。iOSAndroid, orFirefoxOS?
  • deviceName:啟動哪種設備,是真機還是模擬器?iPhone SimulatoriPad SimulatoriPhone Retina 4-inchAndroid EmulatorGalaxy S4, etc...
  • app:應用的絕對路徑,注意一定是絕對路徑。如果指定了appPackage和appActivity的話,這個屬性是可以不設置的。另外這個屬性和browserName屬性是沖突的。
  • browserName:移動瀏覽器的名稱。比如Safari' for iOS and 'Chrome', 'Chromium', or 'Browser' for Android;與app屬性互斥。
  • udid:物理機的id。比如1ae203187fc012g。

 

下面這些屬性是android平台特定的: 

  • appActivity:待測試的app的Activity名字。比如MainActivity, .Settings。注意,原生app的話要在activity前加個"."。
  • appPackage:待測試的app的java package。比如com.example.android.myApp, com.android.settings。

 

 獲取Android app的appActivity

網上有寫很多方法https://testerhome.com/topics/1030,評論區還有補充

我用的是把apk后綴改為zip格式,打開壓縮包后再打開AndroidManifest.xml文件。找到manifest和activity地方,就是包名跟activity名。 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM