Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
android test framework using adb connection and template matching in opencv
The package is for android auto test, based on Python enviroment.
Basic thought is using ADB (Android Debug Bridge) to send command to Android test Phone connected with the PC and match picture by match template algorithm in opencv-python.
1.ADB (Android Debug Bridge)
2.ASM (Android Screen Monitor)
Use to capture partial picture, and you need to install JDK in your computer before running it.
Then adjust zoom to 50%, you can also set zoom to other size, but need to add some code in your case source file after your create your case file:
# adjust asm zoom to other size, 25%
ASM.ZOOM_SIZE = 25
3.Tesseract (Tesseract-OCR)
If you want to use the mechod 'image_to_string' in the 'androidautotest.api' which can recognize text in pictures, you need to install Tesseract and install testdata necessary like chinese 'chi_sim'.
1.Install androidautotest
pip install androidautotest
Follow information indicate you have installed androidautotest successfully.
> python -m androidautotest
usage:
androidautotest --installdep
androidautotest --startasm
androidautotest --newcase <NEWCASE> --savedir <SAVEDIR>
androidautotest --casedir <CASEDIR> --device <DEVICE> --times <TIMES>
A framework to run test case for android automated test
optional arguments:
-V, --version Print version and exit
-h, --help Print this help message and exit
install dependency:
--installdep install dependency of androidautotest
start asm:
--startasm start Android Screen Monitor
create case:
--newcase <NEWCASE> New case name to create
--savedir <SAVEDIR> Path to save new case
run case:
--casedir <CASEDIR> Case path to run
--device <DEVICE> Device to switch
--times <TIMES> Times of case running
2.install requirements
python -m androidautotest --installdep
3.start Android Screen Monitor(First, connect your Android Phone with PC, and open adb debug mode), then run follow command:
python -m androidautotest --startasm
4.create a new case to start your test task with Android Phone(For example: to create a new case named 'case001').
python -m androidautotest --newcase case001 --savedir E:\AndroidTest\workspace
You can find the complete AndroidTest API documentation on readthedocs.
# -*- coding: UTF-8 -*-
from androidautotest.api import *
# to home
keyevent(HOME)
keyevent(HOME,device='HMKNW17421063974')
# to FileBrowser
while not exists(Template(r'pic\20191215121636.png')):
flick((400,400),DIR_LEFT,step=2)
touch(Template(r'pic\20191215121636.png'))
touch(Template(r'pic\20191215134814.png'))
# not in top screen of FileBrowser
if exists(Template(r'pic\20191215143440.png')):
touch(Template(r'pic\20191215142057.png'))
text('15045120')
else:
touch([530,142])
text('15045120')
# 15045120 is in screen
assert_exists(Template(r'pic\20191215142425.png'))
end()
Once you finish your code writing, you can run your case. 1.If you connect one Android Phone with your PC, and run for once time, simple wirte as following
python -m androidautotest --casedir E:\AndroidTest\workspace\case001.air --device HMKNW17421063974 --times 5
2.If you connect more than one Android Phone with your PC, run case with Android Phone which's serial number is 'HMKNW17421063974' for 5 times, you can write as following.
python -m androidautotest --casedir E:\AndroidTest\workspace\case001.air --device HMKNW17421063974 --times 5
And there are three log files you can use to analyze your test plan after run your case.
In case001.air\log\case001.log.XXX
File Name | Description |
---|---|
log_case001_XXX.txt | all log output |
serial_log_case001_XXX.txt | adb log output |
report_case001_XXX.html | report of case run |
FAQs
android test framework using adb connection and template matching in opencv
We found that androidautotest demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.