1. 程式人生 > >真機上執行monkeyrunner python指令碼踩坑系列二

真機上執行monkeyrunner python指令碼踩坑系列二

之前搞monkeyrunner的時候,嘗試過使用AndroidViewClient,但是一直沒配好環境。

這兩天有空恰好朋友也在弄,又撿起來。

才發現之前網上查到的用monkeyrunner 跑androidviewclient完全沒必要。androidviewclient已經完全獨立了,相當於可以python直接執行,它的包裡面也有封裝得很好的可以直接操作真機的函式。通過文字、id等都可以操作,而且現在看來也暫時不需要sleep,能夠自己判斷頁面是否載入完成。到這裡,是不是已經很激動了!!真機上終於可以開搞!

一、安裝

1、首先下載.egg檔案和master壓縮包,我使用的是androidviewclient-12.5.2-py2.7.egg和AndroidViewClient-master.7z。 2、然後使用easy_install安裝.egg檔案,並將AndroidViewClient-master.7z解壓後拷貝到python目錄的\Lib\site-packages資料夾下。 3、記錄AndroidViewClient-master\src路徑,將該路徑新增到系統環境變數中,並命名為ANDROID_VIEW_CLIENT_HOME,我的python安裝在c盤下,因此我的路徑為C:\Python27\Lib\site-packages\AndroidViewClient-master\src

二、使用

這個時候,我們就把整個環境弄好了。接下來看看怎麼使用。這裡主要有兩個地方值得注意的。 1、在AndroidViewClient-master\example資料夾下,給出了很多使用示例。比如你可以檢視che.py檔案,裡面給出了連線裝置的示例。並且有如下程式碼:
b = vc.findViewWithText(u'發訊息')
(x, y) = b.getXY()
b.touch()
這裡我們只是測試連線成功與否,因此可以直接把這段話刪掉。其實這段就是講通過手機佈局上的發訊息文字獲得空間,然後獲取該控制元件x.y座標,然後點選該控制元件。

如果環境配置沒問題,那麼你這個時候可以直接測試che.py檔案,連線上你的手機,然後開啟命令列,輸入命令python che.py即可。

2、在AndroidViewClient-master\doc資料夾下,給出了該專案的使用文件,你可以直接點開裡面的index.html,這裡是最開始的頁面,然後在裡面檢視各種操作文件。

接下來我們給出一個最基礎的使用示例。

新建test.py python檔案並編輯

#! /usr/bin/env python
#coding=utf8
'''
Copyright (C) 2012  Diego Torres Milano
Created on May 5, 2012

@author: diego
'''

import sys
import os
import time

try:
    sys.path.append(os.path.join(os.environ['ANDROID_VIEW_CLIENT_HOME'], 'src'))
except:
    pass

from com.dtmilano.android.viewclient import ViewClient

component = "***"#這裡給出執行的包名和類名

device, serialno = ViewClient.connectToDeviceOrExit()
device.startActivity(component=component)
ViewClient.sleep(5)

vc = ViewClient(device = device, serialno = serialno)
b = vc.findViewWithText(u'測試')
b.touch()
file = open('F:\\tt2.txt','w')
a = ViewClient(*ViewClient.connectToDeviceOrExit(verbose=True)).traverse(transform=ViewClient.traverseShowClassIdTextAndUniqueId,stream=file)
file.close()


print >>sys.stderr, "bye"

說明:

1、我們首先引入環境變數,再匯入包。然後定義component,這裡給出的是需要執行的包名和類,然後開始使用ViewClient連線,並啟動活動。

2、vc = ViewClient(device=device, serialno=serialno)這句話是呼叫ViewClient的建構函式新建物件vc,vc你可以想象這裡就是一個當前的佈局檔案,然後根據文字獲得佈局檔案上面的控制元件b並點選。

3、file部分是將當前佈局檔案儲存在F盤下tt2.txt檔案中,在這個檔案裡面儲存了該頁面的控制元件id。

4、通過id獲取控制元件的示例如:

b = vc.findViewById("id/no_id/%d" % i)
5、每次點選頁面過後(相當於頁面重新載入之後),需要重新整理vc物件,示例如下:
vc.dump()
關於這個坑,差不多也就瞭解到這裡了,androidviewclient已經可以幫我們做很多事情了,而且功能也封裝的很好,大家有興趣的話可以試試。

相關推薦

機上執行monkeyrunner python指令碼系列

之前搞monkeyrunner的時候,嘗試過使用AndroidViewClient,但是一直沒配好環境。 這兩天有空恰好朋友也在弄,又撿起來。 才發現之前網上查到的用monkeyrunner 跑androidviewclient完全沒必要。androidviewclient

python菜鳥系列-虛擬機器docker載入python專案映象並且執行

docker載入映象 docker load --input xxxx.tar docker建立一個新的容器,指定埠對映,例如8080指向容器的8000埠 docker run --nam

appium在機上執行IOS例項要注意的幾點:包括python和java執行log 和部分關鍵程式碼

最近在研究appium對於IOS的自動化測試,發現在真機上執行appium提供的開源的例子遇到了幾個block,詢問了一個這個方便麵的高手並且總結網上搜到的帖子,現在綜合一下。 appium 在模擬器中跑,只需要注意: 1:app=path找到編譯後app所在的位置,如:注

python selenium

from int find 微博 登陸 selector pytho row exce 想做做信息檢索課設,先寫個爬蟲爬爬微博。 看了一下午微博的api,晚上決定用chromnium。 先通過pip安裝selenium,官方文檔看一眼, pip install sel

android TextView空間的setTextSize()方法在機上執行大小問題

今天除錯一個專案,點選控制元件,放大或縮小TextView中的文字字型大小 它在虛擬機器上能正常執行,但在真機上出現錯誤 給段程式碼: viewText.setTextSize(viewText.getTextSize()-5); System.out.println("viewTi

Python爬蟲之隨機數種子的問題

在看一本資料庫產生了一個關於離散的問題,由於本人對離散還不懂。在大佬的建議下研究了下隨機數種子的問題(和此問題類似吧) 由於隨機數種子的概念有些文章已經有了就不在贅述:隨機數種子概述 在此主要通過Python當中random來研究這個問題:random模組 進

Python爬蟲之二分查詢,數值按位相加,

由於比較緊張,題當時沒寫完,昨天重新寫了下 二分查詢: 二分查詢又稱折半查詢,其核心就是在有序的表中,取中表的中間值和目標值來匹配, 中間值比目標值大,則繼續左子表中二分,反之同理。一直查到目標值與匹配值相等, 否則不存在。 題目:在數字列表中隨機兩個數使之等

python xgboost實錄

python xgboost踩坑實錄 前言 載入模型 載入資料 參考連結 前言 在python下執行xgboost有許多要注意的地方。 筆者在載入模型及載入資料的時候都踩了坑,為了避免再度踩坑,所以將解法記錄於此。 載入模型

Android 機搭建 React-Native 環境記錄

本文記錄了我搭建 React-Native 專案時踩過的坑(下稱 RN),以及使用 Android 真機執行 RN 專案遇到的問題,供大家參考。 初始化 RN 專案 執行 react-native init [your project name] 命令在本地初始化一個 RN 專案

Android開發——打包我們的APP,變成可以機上執行的軟體

  我們寫好了APP後它只執行在虛擬機器中,這個也太low了吧?我們要做的是APP,可以執行在Android手機上的軟體,而不是隻能在執行在虛擬機器中的東西,那麼就需要我們來把我們的APP打包成Android應用了。 1.選擇"File——>Export",然後我們選

python 系列之巢狀列表建立

1.初始化列表及修改     初始化列表有很多方法,其中之一可以通過*來初始化: a = [[]]*3 print a >>> [[], [], []] 通過這個方法獲取了一個包含三個空list的巢狀列表,下面對這個列表進行修改: a[0].appe

iOS開發如何將自己的程式在機上執行

這也是一個關鍵的設定步驟,這一步將會把你的所有設定資訊統籌起來生成一個Provisioning Profile檔案。點選此頁面右上方的“New Profile”按鈕進入Profile建立頁面。在Profile Name文字框中為新的Profile命名,在下面選擇你已經建立成功的認證書,應用程式ID和iPho

Windows下使用Apache執行本地Python指令碼和訪問html教程

最近學習到Python的cgi程式設計,搗鼓了一番,把自己的學習經驗放出來。一、安裝Apache2.4伺服器你需要去官網下載。地址:https://www.apachehaus.com/cgi-bin/download.plx或者http://www.apachelounge

建立react native 專案並在機上執行專案

第一步,將手機連結到計算機,並調到開發者模式: 第二步,開啟Android Studio左上角file→open選擇專案檔案(注意選擇專案下面的Android檔案)如下圖: 點選OK,載入專案,載入完成後,如下圖操作: 此時,專案已經成功安裝在真機上,但是,

IOS開發:自己開發的APP在機上執行測試的設定

1   點開Xcode   cmd+,開啟系統偏好設定第二個圖示Accounts  新增自己手機註冊用的APPID 2 Xcode----Build Setting ----Packaging----Product Bundle Identifier     設定為空

python爬蟲教程

table app soup url pdf lena 為我 ctrl+s gtd 我們的目標是爬取下面這個個網址上的2010~2018年的數據 http://stockdata.stock.hexun.com/zrbg/Plate.aspx?date=2015-12-3

Windows+Apache+Python+Django 記錄

摘要   使用Python進行Web專案開發;相對於主流三大Web端解決方案(Java/.NET/PHP) Python在某些方面具有一定的優勢,相對 Java/.NET 有更輕量級的部署方案,相對PHP有更安全開放的環境支援,這些不同點幾乎完全取決於Python語言本身的特性。 0x01: 環境部署

Visual Studio For MacOS 記()

mirrors class app macosx andro mce 資料 library devel Visual Studio For MacOS安裝安卓SDK。 系統默認安裝了安卓6.0 API23的SDK。 但是我需要安卓7.0的,API24. 遂安裝。

ReactNative系列--構建失敗

pos hone dia install works 沒有 iphone 註意 module 初始化項目後執行react-native run-ios,構建失敗: ** BUILD FAILED ** The following commands produced a

【Kafka系列之一】消費者拉不出數據

dex -c 通知 還得 gin div 消費 發現 拉取 一、Bug背景 因業務需要,我們部署了兩個Kafka集群。Kafka集群A的版本號為:0.11.0.1,Kafka集群B的版本號為0.9.0.1。 因兩個Kafka集群的版本號不一致,嘗試了