python调用adb shell命令_Python之使用adb shell命令启动应用的方法详解
Python之使用adb shell命令啟動應用的方法詳解
一直有一個心愿希望可以用Python做安卓自動化功能測試,在一步步摸索中,之前是用monkeyrunner,但是發現對于控件ID的使用非常具有局限性,尤其是ID的內容不便于區分
具有重復性時,后面又發現Uiautomator可以對resorceId、text、packageName等元素進行定位,也找到了xiaochong這位大神關于uiautomator的封裝包,鏈接如下:
https://github.com/xiaocong/uiautomator
做為一個小白,這一切都需要摸索,在克服了安裝uiautormator封裝包的問題后,又卡在啟動應用這個問題上,之前使用monkeyrunner時啟動應用使用的是如下代碼:
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage
package = 'com.android.settings'
activity = '/.Settings'
runcomponent = package + activity
device.startActivity(component = runcomponent)
也是我無知,嘗試了很久,終于找到了adb shell am start 包名/Activity啟動,以設置應用為例,代碼如下
import os
os.system(“adb shell am start -n com.android.settings/.Settings”)
運行結果如下:
Starting: Intent { cmp=com.android.settings/.Settings }
0
成功進入設置應用界面,接下來可以嘗試其它你想做的操作了
當然這只是解決了我在PC上運行的問題,在查找問題時有留意到uiautomator最終是要編譯成jar文件是要放到android里面的虛擬環境去執行命令,但是android內部并沒有adb
環境,所以adb命令會失敗,必須得找到能夠在android也可以運行的方法
以此做個備忘,希望自己可以在這條路上走得越來越遠。
以上這篇Python之使用adb shell命令啟動應用的方法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。
時間: 2019-01-05
expect是用來實現自動交互功能的工具之一,使用expect-send來實現交互過程. 注意: 1.腳本的執行方法與bash shell不一樣,比如:expect example.sh 2.向一個腳本傳遞參數時,bash shell是使用$1,$2...來接收參數的:而expect則將腳本的執行參數保存在數組$argv中,在腳本中一般將其賦值給變量:set 變量名 [lindex $argv 參數] #!/usr/bin/expect set ip [lindex $argv 0] set p
經常有同事問,刪除文件/目錄時報Operation not permitted錯誤,這個要如何處理?! 這個一般是權限的問題,比如: 1. 普通用戶且有足夠的權限的話,一般文件夾可能是別的服務/進程掉用該文件夾 lsof +D? /Dir/Your/Want/To/Delete/ 先執行上面的命令,查詢到調用該文件夾的進程IDs,然后再kill掉,這個時候應該就可以刪了! 2. 普通用戶且缺乏權限的話,如果要刪除該文件夾則要借助su或者sudo命令來刪除 3. 如果是root用戶,依然報上面的錯
經常碰到的場景,需要去除字符串中的前后的空格.在Shell中不像其他語言有strip()來處理,不過也是可以使用諸如awk等命令來處理. 下面是一個簡單示例: [root@localhost ~]# echo ' A B C ' | awk '{gsub(/^\s+|\s+$/, "");print}' ^\s+? ? ? ? ? ? 匹配行首一個或多個空格 \s+$? ? ? ? ? ? 匹配行末一個或多個空格 ^\s+|\s+$? ? 同時匹配行首或者行末的空格 如果不用awk命令
當前目錄下多個文件合并為一個文件 1.將多個文件合并為一個文件沒有添加換行符 find ./ -name "iptv_authenticate_201801*" | xargs cat > iptv_authenticate.txt 2.設置換行符^J find ./ -name "iptv_authenticate_201801*" | xargs sed 'a\^J' > iptv_authenticate.txt 3.默認換行符 find ./ -
1.問題 我們一般很多時候會需要在ubuntu終端上打印當前運行app的日志,我們一般常見的做法是 1).獲取包名 打開當前運行的app,然后輸入如下命令,然后在第一行TASK后面的就可以看到包名 adb shell dumpsys activity top 2).我們的終端安裝了pidcat.py腳本,然后執行如下的命令就可以打印當前運行app的全日志, pidcat.py packageName 3).思考,為什么每次都需要這樣重復的操作呢?一說到重復,我們應該立馬想到是否可以用腳本解決重復
由于一些不可抗拒的原因,項目部署后需要定時檢測項目是否正常運行,否則將執行重啟命令. 在具體實施過程中發現,定時器執行無誤,但是重啟命令無法正常啟動.多方查找發現Shell腳本中的Java命令需要引入環境變量方可正常執行.因此做了一下修改,腳本如下(僅供參考): 1.crontab執行配置 * * * * * cd /項目目錄 && ./auto_start.sh >> /log/auto.out 2.Shell腳本 #!/bin/bash #導入環境變量 export LAN
要合并以下兩個文件,一起合并在一起,合并到1.txt中 # 1.txt Jerry 20 Alice 30 David 40 # 2.txt Jerry man Alice woman David 40 合并的后的1.txt Jerry 20 man Alice 30 woman David 40 上面的文件特點是有相同的,則合并,第二列缺少內容的.這個時候使用join -a1 1.txt 2.txt就可以很好的達到目的. [root@host ~]# join -a1 1.txt 2.txt
在進行linux測試時編寫腳本是必不可少的.最近經常使用Linux,感覺太頻繁地敲擊鍵盤有些累了,于是想到了Shell腳本.可以把太多的命令寫成一個腳本,這樣每次執行一遍? shell文件,就可以省去了敲擊鍵盤的時間.于是在網上搜了一些有關Linux下腳本編程的內容. Shell不僅僅是命令的收集,而且是一門非常棒的編程語言.您可以通過使用shell使大量的任務自動化,shell特別擅長系統管理任務,尤其適合那些易用性.可維護性和便攜性比效率更重要的任務. 用戶可以使用任何文本編輯器編輯shel
在linux shell環境下直接調用就可以,根據官網所述:在訪問Zabbix中的任何數據之前,你需要登錄并獲取身份驗證令牌.這可以使用該 user.login 方法完成. [root@localhost ~]# curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method":"user.login","params
需求:根據MAC獲取,MAC對應的硬件版本和軟件版本.在根據硬件版本統計MAC的數量 $ head test_1.txt 00:07:67,EC2108,HWV010537P0000 00:07:63,Z83,ZNV861010P1225 00:07:67,EC6108V9U_ca_sccdx,HWV218012P0000 00:07:63,SBox8900hisi3716V3,ZGV865012P0001 00:07:67,EC6108V9U_ca_sccdx,HWV218012P0000 0
用Python寫運維腳本時,經常需要執行linux shell的命令,Python中的commands模塊專門用于調用Linux shell命令,并返回狀態和結果,下面是commands模塊的3個主要函數: 1. commands.getoutput('shell command') 執行shell命令,返回結果(string類型) 復制代碼 代碼如下: >>> commands.getoutput('pwd') '/home/oracle' 2. commands.getstatus(
分享一個統計代碼行的shell命令: find . "(" -name ".java" -or -name ".html" -or -name ".js" -or -name ".css" ")" -print | xargs wc -l 根據不同的項目類型,不同的目錄,自行修改. 如果內容多,可以: find . "(" -name ".java"
前言 linux shell命令通常可以通過-h或--help來打印幫助說明,或者通過man命令來查看幫助,有時候我們也會給自己的程序寫簡單的幫助說明,其實幫助說明格式是有規律可循的 幫助示例 下面是git reset命令的幫助說明,通過man git-reset可以查看 git reset [-q] [] [--] ... git reset (--patch | -p) [] [--] [
問題描述:在linux shell中如何處理tail -n 10 access.log這樣的命令行選項?在bash中,可以用以下三種方式來處理命令行參數,每種方式都有自己的應用場景.1,直接處理,依次對$1,$2,...,$n進行解析,分別手工處理:2,getopts來處理,單個字符選項的情況(如:-n 10 -f file.txt等選項):3,getopt,可以處理單個字符選項,也可以處理長選項long-option(如:--prefix=/home等).總結:小腳本手工處理即可,getopt
本文實例講述了Python統計文件中去重后uuid個數的方法.分享給大家供大家參考.具體如下: 利用正則表達式按行獲取日志文件中的的uuid,并且統計這些uuid的去重個數(去重利用set) import re pattern=re.compile(r'&uuid=.*&') uuidset=set() with open('request.log.2015-05-26','rt') as f: for line in f: all=pattern.findall(line) if len
前言 大家都知道,通過使用 shell 命令可以很方便地對日志進行統計和分析,當服務有異常的時候,需要去排查日志,那么掌握一種統計日志的技巧就是必不可少的了. 假設有一個包含下面內容的日志文件 access.log.我們以統計這個文件的日志為例. date=2017-09-23 13:32:50 | ip=40.80.31.153 | method=GET | url=/api/foo/bar?params=something | status=200 | time=9.703 | bytes=
習慣使用linux命令行來管理linux系統,例如: 復制代碼 代碼如下: $ date 二 11 23 01:34:58 CST 1999? $ 用戶登錄時,實際進入了shell,它遵循一定的語法將輸入的命令加以解釋并傳給系統.命令行中輸入的第一個字必須是一個命令的名字,第二個字是命令的選項或參數,命令行中的每個字必須由空格或TAB隔開,格式如下:? 復制代碼 代碼如下: $ Command Option Arguments 一,選項和參數 選項是包括一個或多個字母的代碼,它前面有一個減號(減
最近都需要在 Linux 系統下開發,所以經常需要在終端中進行操作.Linux 有很多 shell 命令可以幫助我們完成任務,但不常使用的話就會忘記掉. 本篇作為命令備忘錄,我會將實際工作當中用到的命令記錄下來,并長期保持更新. 1.which which 用于查找一個文件,并返回絕對路徑,查找的目錄范圍由系統的 PATH 指定. 由于 Linux 中一切皆文件,所以 which 指定更多的是查找系統中有沒有這個命令. 比如,查找 ls 命令,我們可知它的可執行文件的位置 which ls /b
在Ruby中,執行shell命令是一件不奇怪的事情,Ruby提供了大概6種方法供開發者進行實現.這些方法都很簡單,本文將具體介紹一下如何在Ruby腳本中進行調用終端命令. exec exec會將指定的命令替換掉當前進程中的操作,指定命令結束后,進程結束. 復制代碼 代碼如下: exec 'echo "hello world"' print 'abc' 執行上述的命令,結果如下,我們可以看到沒有abc的輸出,可以看出來,在執行echo "hello world"命令后
總結
以上是生活随笔為你收集整理的python调用adb shell命令_Python之使用adb shell命令启动应用的方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 西南科技大学OJ题 带权无向图存储判定
- 下一篇: javascript --- Obje