appium入門篇(2)--desired capabilities
目錄
- 1、appium工作原理
- desired capabilities
- 2、準備工作
- 3、第一個appium指令碼
- 獲取包名和啟動的activity
- 編寫指令碼
- 執行結果
1、appium工作原理
- 啟動appium server
- appium client 傳送Desired Capabilities資訊給appium server,appium server返回一個session id給client
- appium client傳送指令給appium server,appium server把命令傳送到移動裝置上去執行
- 移動端裝置將執行結果返回給appium server,appium server再返回給client
desired capabilities
desired capabilities是什麼,它的作用是告訴appium server被測試apk相關的資訊,移動裝置相關的資訊。直接上官網的解釋,地址:
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
Desired Capabilities are keys and values encoded in a JSON object, sent by Appium clients to the server when a new automation session is requested. They tell the Appium drivers all kinds of important things about how you want your test to work. Each Appium client builds capabilities in a way specific to the client's language, but at the end of the day, they are sent over to Appium as JSON objects.
2、準備工作
- 啟動安卓模擬器,並開啟開發者模式
- 啟動appium server
PS C:\Users\StephenWang> appium -a 127.0.0.1 -p 4723
[Appium] Welcome to Appium v1.13.0
[Appium] Non-default server args:
[Appium] address: 127.0.0.1
[Appium] Appium REST http interface listener started on 127.0.0.1:4723
下載錘子日曆apk,v1.6
下載地址:http://www.paopaoche.net/android/77944.html- 檢視模擬器是否連線成功
adb devices
如果裝置未連線,嘗試手動連線
#夜神模擬器連線命令
adb connect 127.0.0.1:62001
# 逍遙模擬器
adb connect 127.0.0.1:21503
3、第一個appium指令碼
在模擬器上安裝錘子日曆並啟動。
獲取包名和啟動的activity
aapt dump badging C:\appium\chuizirili_ppc.apk
package: name='com.smartisan.calendar' versionCode='20161127' versionName='1.7.2'
uses-permission:'android.permission.GET_ACCOUNTS'
uses-permission:'android.permission.MANAGE_ACCOUNTS'
uses-permission:'android.permission.INTERNET'
uses-permission:'android.permission.VIBRATE'
uses-permission:'android.permission.READ_CONTACTS'
uses-permission:'android.permission.READ_CALENDAR'
uses-permission:'android.permission.WRITE_CALENDAR'
uses-permission:'android.permission.WAKE_LOCK'
uses-permission:'android.permission.RECEIVE_BOOT_COMPLETED'
uses-permission:'android.permission.USE_CREDENTIALS'
uses-permission:'android.permission.READ_SYNC_SETTINGS'
uses-permission:'com.google.android.googleapps.permission.GOOGLE_AUTH.mail'
uses-permission:'android.permission.AUTHENTICATE_ACCOUNTS'
uses-permission:'android.permission.ACCESS_COARSE_LOCATION'
uses-permission:'android.permission.ACCESS_FINE_LOCATION'
uses-permission:'android.permission.READ_SYNC_STATS'
uses-permission:'com.smartisan.permission.READ_ACCOUNT'
uses-permission:'android.permission.ACCESS_NETWORK_STATE'
uses-permission:'android.permission.READ_EXTERNAL_STORAGE'
uses-permission:'android.permission.WRITE_EXTERNAL_STORAGE'
uses-permission:'android.permission.READ_PROFILE'
uses-permission:'android.permission.CALL_PHONE'
uses-permission:'android.permission.READ_PHONE_STATE'
uses-permission:'android.permission.ACCESS_WIFI_STATE'
uses-permission:'android.permission.CHANGE_WIFI_STATE'
uses-permission:'android.permission.CHANGE_CONFIGURATION'
uses-permission:'android.permission.GET_TASKS'
uses-permission:'android.permission.MOUNT_UNMOUNT_FILESYSTEMS'
uses-permission:'android.permission.WRITE_CONTACTS'
uses-permission:'android.permission.READ_CALENDAR'
uses-permission:'android.permission.WRITE_SYNC_SETTINGS'
uses-permission:'android.permission.WRITE_SETTINGS'
sdkVersion:'14'
targetSdkVersion:'19'
application: label='Smartisan Calendar' icon='res/mipmap-xhdpi-v4/ic_launcher_calendar.png'
launchable activity name='com.android.calendar.AllInOneActivity'label='' icon=''
uses-feature:'android.hardware.location'
uses-feature:'android.hardware.location.gps'
uses-feature:'android.hardware.location.network'
uses-feature:'android.hardware.wifi'
uses-feature:'android.hardware.telephony'
uses-feature:'android.hardware.touchscreen'
main
other-activities
search
other-receivers
other-services
supports-screens: 'small' 'normal' 'large' 'xlarge'
supports-any-density: 'true'
locales: '--_--' 'ca' 'da' 'fa' 'ja' 'nb' 'be' 'de' 'af' 'bg' 'th' 'fi' 'hi' 'vi' 'sk' 'uk' 'el' 'nl' 'pl' 'sl' 'tl' 'am' 'in' 'ko' 'ro' 'ar' 'fr' 'hr' 'sr' 'tr' 'cs' 'es' 'ms' 'et' 'it' 'lt' 'pt' 'hu' 'ru' 'zu' 'lv' 'sv' 'iw' 'sw' 'fr_CA' 'lo_LA' 'en_GB' 'et_EE' 'ka_GE' 'km_KH' 'zh_HK' 'hy_AM' 'zh_CN' 'en_IN' 'mn_MN' 'es_US' 'pt_PT' 'zh_TW' 'ms_MY'
densities: '120' '160' '240' '320' '480'
從上面可知,package: name='com.smartisan.calendar' ,aunchable activity name='com.android.calendar.AllInOneActivity'
編寫指令碼
from time import sleep
#從appium中匯入webdriver
from appium import webdriver
desired_apability = {}
#平臺名稱:Android/IOS
desired_apability["platformName"] = "Android"
#系統版本
desired_apability["platformVersion"] ="4.4.2"
#裝置名稱
desired_apability["deviceName"] = "127.0.0.1:62001"
#是否重置會話
desired_apability["noReset"] = True
#啟動的Activity
desired_apability["appActivity"] = "com.android.calendar.AllInOneActivity"
#包名
desired_apability["appPackage"] = "com.smartisan.calendar"
#apk的地址
desired_apability["app"] = r"C:\appium\chuizirili_ppc.apk"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_apability)
#睡眠5s
sleep(5)
print("Install %s and start sucess" %desired_apability["appPackage"])
driver.quit()
執行結果
執行指令碼,開啟模擬器觀察效果,
相關推薦
appium入門篇(2)--desired capabilities
目錄 1、appium工作原理 desired capabilities 2、準備工作 3、第一個appium指令碼 獲取包名和啟動的activity 編寫指
appium入門篇(1)--零基礎搭建自動化環境
目錄 1、關鍵概念 2、安裝過程 2.1、安裝nodejs 2.2、安裝appium 2.3、安裝Android SDK 2.4、安裝模擬器 2.5、安裝Pyt
Linux驅動入門篇(三):基本的字符設備模塊(2)
連接 truct ace alloc orm 負數 -s tabs idt 上一節中介紹了設備號的申請和釋放,這一節開始了解字符設備的相關操作。 首先定位到<linux/cdev.h>文件,查看內核提供給字符設備的接口。 cdev結構 str
nginx 從入門到實踐 -基礎篇(2)
上篇說到了linux的安裝 目錄基本講解 以及啟動訪問。 下面繼續探索。 1)模組 –with-http_random_linux_module 目錄中選擇一個隨機主頁 _ witn-http_sub_module
Kubernetes 1 3 從入門到進階 安裝篇(2)
pri http com block .com 整理 希望 over role Kubernetes 1.3 從入門到進階 安裝篇: kubernetes-ansible 上一篇文章我們介紹了使用minikube快速部署kubernetes1.3到單機上. 多臺機器構成
SSH入門Struts2篇(2)——Action的四種自定義方法
1.Action類的生命週期 框架先例項化 Action 物件,再呼叫 Action 的 set*** 函式,封裝表單資料,然後呼叫 execute 函式,進行處理。 在第二次提交時,Action 會重新例項化,每一個 Action 物件都服務一個請求,這和
OpenFaceswap 入門教程(2):軟件使用篇!
問題 bubuko 結果 使用 轉換 方便 eat 應該 下一個 安裝完OpenFaceswap之後,是不是就迫不及待的想要“見證奇跡”了呢? 都說磨刀不誤砍柴工。開始之前請先做一個準備。然後大致了解一下換臉的過程 換臉基本步驟是: 把
perl入門知識(2)
連接符 用法 num 路徑 常用函數 表示 取余 運算符 內容 交互式編程你可以在命令行中使用 -e 選項來輸入語句來執行代碼,實例如下:$ perl -e ‘print "Hello World\n"‘輸入以上命令,回車後,輸出結果為:Hello World 腳本式編程
Three.js入門篇(一)創建一個場景
style api text webgl () mes utf 動畫 fun 上一面講述了向場景中添加物體對象。這一篇準備把每個功能點細細的講述一遍,一方面是為了加深自己的理解。另一方面希望能夠 幫助到有需要的人。 一、在學習WEBGL的時候,你應該先了解要創建一個WebG
ArcGIS基礎篇(2)——如何將模型導成py文件?
src 代碼 使用 images 友好 編程 基礎篇 {} left Python腳本使用很方便,熟悉一點編程的,了解一點Python的,都可以在ArcGIS中嘗試用Python進行數據處理。把模型導出成py需要註意三個問題: 一是格式,Python對縮進很敏感,不使用{}
linux磁盤篇(2)——lvm
linux磁盤 lvm LVM Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制。LVM解決了分區大小分配磁盤擴展問題。例如: 在創建的系統的時候講/date 分配掛載在/目錄下,後期由於業務需求需要獨立出來。重新掛載一個新的分區
java入門學習(2)—基本數據類型
堆內存 類指針 erl 相互 lean 就是 沒有初始化 true ++ 1、變量:定義變量:【數據類型】 變量名 = 賦值(這樣定義的變量一般屬於局部變量,放置在棧內存中); 2、標識符:可以有字母(可以使任意文字),數字,下劃線,$等組成;但是不能以數字開頭,不能是保留
自興人工智能------------python入門基礎(2)列表和元祖
div 最小值 最大值 布爾 str 列操作 一段 ext .so 一.通用序列操作: 列表中所有序列都可以進行特定的操作,包括索引(indexing).分片(slicing).序列相加(adding).乘法,成員資格,長度,最小值,最大值,下面會一一介紹這些操作法。 1.
Sping Boot入門到實戰之入門篇(三):Spring Boot屬性配置
git 測試 add 禁用 rop fix ron org set 該篇為Sping Boot入門到實戰系列入門篇的第三篇。介紹Spring Boot的屬性配置。 傳統的Spring Web應用自定義屬性一般是通過添加一個demo.properties配置文件(
Python入門篇(五)之文件操作和字符編碼
Python 文件操作和字符編碼 1、文件操作 1、文件操作流程: 打開文件,得到文件句柄並賦值給一個變量===> file = open("yesterday",encoding="utf-8") 通過句柄對文件進行操作 關閉文件 ==> file.close() 1.2、打開文件的
Python入門篇(四)之字符串、字典、集合
Python 字典 1、字符串操作 字符串是無法修改的,只能作為查詢.在python中,加了引號的字符就是字符串類型,python並沒有字符類型。定義:name=‘kim‘ #name=str(‘kim‘) 用於標識:描述性的內容,如姓名,性別,國籍,種族那單引號、雙引號、多引號有什麽區別呢? 讓我
Python入門篇(三)之列表
Python1、列表定義 names = ["ZhangYang","Guyun","Xiangpeng","Xuliangchen"] #列表存儲,類似數組 2、列表的操作 (1)切片 names = ["ZhangYang","Guyun","Xiangpeng","Xuliangchen"] #列表存儲
Python入門篇(一)
Python Pycharm 一、Python入門 python學習博客:http://www.cnblogs.com/haiyan123/p/8387770.html#lable1http://www.cnblogs.com/alex3714http://www.cnblogs.com/linhai
痞子衡嵌入式:飛思卡爾i.MX RT系列微控制器啟動篇(2)- Boot配置(BOOT_CFG Pin/eFUSE)
TP 執行 不同 mcu 更新 oom als 配置 示例 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是飛思卡爾i.MX RT系列MCU的Boot配置。 在上一篇文章 飛思卡爾i.MX RT系列微控制器啟動篇(1)- Boot簡介 裏痞子衡為大
python3-開發面試題(python)6.23基礎篇(2)
漢字 2個 特殊 問題 ase 第一個 else () 判斷 1、請至少列舉5個 PEP8 規範(越多越好)。 一、代碼編排 1、縮進。4個空格的縮進,不使用Tap,更不能混合使用Tap和空格 2、每行最大長度79,換行可以使用反斜杠,最好使用圓括號。換行點要在操作符