欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android模擬用戶點(diǎn)擊的實(shí)現(xiàn)方法

 更新時(shí)間:2018年02月25日 11:27:17   作者:Rust Fisher  
這篇文章主要給大家介紹了關(guān)于Android模擬用戶點(diǎn)擊的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)學(xué)習(xí)學(xué)習(xí)吧。

前言

Android模擬用戶點(diǎn)擊。在自動(dòng)化測(cè)試中可使用的工具。

可以利用adb命令,也可以使用Android SDK中的monkeyrunner工具。

  • win7-64
  • gitbash

使用adb命令

主要使用input命令

usage: input ...
  input text <string>
  input keyevent <key code number or name>
  input tap <x> <y>
  input swipe <x1> <y1> <x2> <y2>

keyevent指的是android對(duì)應(yīng)的keycode,比如home鍵的keycode=3,back鍵的keycode=4

tap是touch屏幕的事件,只需給出x、y坐標(biāo)即可

swipe模擬滑動(dòng)的事件,給出起點(diǎn)和終點(diǎn)的坐標(biāo)即可

編寫(xiě)一個(gè)bat腳本,模擬用戶滑動(dòng)

@echo off
echo --------- Mock start ----------

:tag_start
echo running...
adb shell input swipe 650 250 200 666
@ping 127.0.0.1 -n 8 >nul
goto tag_start

echo --------- Mock finish ---------
pause

死循環(huán)發(fā)送滑動(dòng)命令,延時(shí)語(yǔ)句@ping 127.0.0.1 -n 8 >nul

monkeyrunner

環(huán)境配置,配置好Java與Android SDK的環(huán)境變量。手機(jī)連接到電腦。
系統(tǒng)變量中加入ANDROID_SWT,此例中路徑為G:\SDK\tools\lib\x86_64

修改后的腳本rustmonkeyrunner.bat,Windows環(huán)境下需要在gitbash或CMD里運(yùn)行

來(lái)自unable-to-access-jarfile-framework-monkeyrunner-25-3-2-jar

@echo off
rem Copyright (C) 2010 The Android Open Source Project
rem
rem Licensed under the Apache License, Version 2.0 (the "License");
rem you may not use this file except in compliance with the License.
rem You may obtain a copy of the License at
rem
rem  http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.

rem don't modify the caller's environment
setlocal

rem Set up prog to be the path of this script, including following symlinks,
rem and set up progdir to be the fully-qualified pathname of its directory.
set prog=%~f0

rem Change current directory and drive to where the script is, to avoid
rem issues with directories containing whitespaces.
cd /d %~dp0

rem Check we have a valid Java.exe in the path.
set java_exe=
call ..\lib\find_java.bat
if not defined java_exe goto :EOF
for /f %%a in ("%APP_HOME%\lib\monkeyrunner-25.3.2.jar") do set jarfile=%%~nxa
set frameworkdir=.
set libdir=

if exist %frameworkdir%\%jarfile% goto JarFileOk
 set frameworkdir=..\lib

if exist %frameworkdir%\%jarfile% goto JarFileOk
 set frameworkdir=..\framework

:JarFileOk

set jarpath=%frameworkdir%\%jarfile%

if not defined ANDROID_SWT goto QueryArch
 set swt_path=%ANDROID_SWT%
 goto SwtDone

:QueryArch

 for /f "delims=" %%a in ('%frameworkdir%\..\bin\archquery') do set swt_path=%frameworkdir%\%%a

:SwtDone

if exist "%swt_path%" goto SetPath
 echo SWT folder '%swt_path%' does not exist.
 echo Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
 exit /B

:SetPath

call "%java_exe%" -Xmx512m "-Djava.ext.dirs=%frameworkdir%;%swt_path%" -Dcom.android.monkeyrunner.bindir=..\..\platform-tools -jar %jarpath% %*

運(yùn)行腳本

Administrator@rust-PC ~
$ /cygdrive/g/SDK/tools/bin/rustmonkeyrunner.bat
Jython 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:54:35)
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_77

首次運(yùn)行時(shí)import模塊遲遲沒(méi)有反應(yīng)

>>> from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage

嘗試運(yùn)行腳本an_test2.py

import os

print("importing module...")
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage

print("waiting for connection...")
device = MonkeyRunner.waitForConnection()
print("device found!")

s_wid = int(device.getProperty("display.width"))  # 獲取屏幕寬度像素
s_height = int(device.getProperty("display.height")) # 獲取屏幕高度像素

print("build.version.sdk " + str(device.getProperty("build.version.sdk")))
print("display.width  " + str(s_wid))
print("display.height " + str(s_height))

drag_point_left_x = 20
drag_point_right_x = s_wid - 20
drag_point_y = s_height / 2

for i in range(0, 10):
 print("current loop is " + str(i))
 device.drag((drag_point_right_x, drag_point_y), (drag_point_left_x, drag_point_y), 1.0, 50)
 print("waiting...")
 MonkeyRunner.sleep(1)
 print("continue")
 device.drag((drag_point_left_x, drag_point_y), (drag_point_right_x, drag_point_y), 0.5, 3)
 MonkeyRunner.sleep(3)

print("-------- finish --------")

命令行直接執(zhí)行,可以看到執(zhí)行結(jié)果和相應(yīng)的報(bào)錯(cuò)信息

C:\Users\Administrator>G:\SDK\tools\bin\rustmonkeyrunner.bat H:\fisher_p\py_ws\an_test2.py
importing module...
waiting for connection...
device found!
build.version.sdk 23
display.width  1440
display.height 2560
current loop is 0
waiting...
continue
current loop is 1
# .....
-------- finish --------

測(cè)試中發(fā)現(xiàn),腳本可以運(yùn)行在系統(tǒng)app。若當(dāng)前打開(kāi)的是第三方app,會(huì)直接報(bào)錯(cuò),獲取不到相應(yīng)信息

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Android Handler消息派發(fā)機(jī)制源碼分析

    Android Handler消息派發(fā)機(jī)制源碼分析

    這篇文章主要為大家詳細(xì)分析了Android Handler消息派發(fā)機(jī)制源碼,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android三種方式生成矢量圖之VectorDrawable類使用詳解

    Android三種方式生成矢量圖之VectorDrawable類使用詳解

    這篇文章主要介紹了Android三種方式生成矢量圖的VectorDrawable類,2014年6月26日的I/O?2014開(kāi)發(fā)者大會(huì)上谷歌正式推出了Android?L,它帶來(lái)了全新的設(shè)計(jì)語(yǔ)言Material?Design,新的API也提供了這個(gè)類VectorDrawable
    2023-02-02
  • Android使用ViewPager加載圖片和輪播視頻

    Android使用ViewPager加載圖片和輪播視頻

    這篇文章主要為大家詳細(xì)介紹了Android使用ViewPager加載圖片和輪播視頻,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Android多種方式實(shí)現(xiàn)相機(jī)圓形預(yù)覽的示例代碼

    Android多種方式實(shí)現(xiàn)相機(jī)圓形預(yù)覽的示例代碼

    這篇文章主要介紹了Android多種方式實(shí)現(xiàn)相機(jī)圓形預(yù)覽的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Java操作FreeMarker模板引擎的基本用法示例小結(jié)

    Java操作FreeMarker模板引擎的基本用法示例小結(jié)

    這篇文章主要介紹了Java操作FreeMarker模板引擎的基本用法示例小結(jié),FreeMarker本身由Java寫(xiě)成,用模板來(lái)生成文本輸出,需要的朋友可以參考下
    2016-02-02
  • Android實(shí)現(xiàn)九宮格解鎖

    Android實(shí)現(xiàn)九宮格解鎖

    根據(jù)最近Android項(xiàng)目需要,實(shí)現(xiàn)九宮格解鎖效果,下面小編給大家分享了具體實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Android使用AlarmManager設(shè)置鬧鐘功能

    Android使用AlarmManager設(shè)置鬧鐘功能

    這篇文章主要為大家詳細(xì)介紹了Android使用AlarmManager設(shè)置鬧鐘功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Android自定義Dialog的2種常見(jiàn)方法

    Android自定義Dialog的2種常見(jiàn)方法

    這篇文章主要分享了Android自定義Dialog的2種常見(jiàn)方法,大多數(shù)中,使用系統(tǒng)內(nèi)置的dialog并不能滿足UE的設(shè)計(jì)需要,關(guān)于兩種方法下面文章將詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Android使用Canvas對(duì)象實(shí)現(xiàn)刮刮樂(lè)效果

    Android使用Canvas對(duì)象實(shí)現(xiàn)刮刮樂(lè)效果

    這篇文章主要介紹了Android使用Canvas對(duì)象實(shí)現(xiàn)刮刮樂(lè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Android開(kāi)發(fā)筆記之:AsyncTask的應(yīng)用詳解

    Android開(kāi)發(fā)筆記之:AsyncTask的應(yīng)用詳解

    本篇文章是對(duì)Android中AsyncTask的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05

最新評(píng)論