Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions qt4a/androiddriver/adb.py
Original file line number Diff line number Diff line change
Expand Up @@ -450,8 +450,7 @@ def wait_for_boot_complete(self, _timeout=180):
wait_period = 5
while not boot_complete and (attempts * wait_period) < _timeout:
output = self.run_shell_cmd("getprop sys.boot_completed", retry_count=1)
output = output.strip()
if output == "1":
if output and output.strip() == "1":
boot_complete = True
else:
time.sleep(wait_period)
Expand Down
32 changes: 28 additions & 4 deletions qt4a/androiddriver/devicedriver.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
import re
import os
import time
import traceback

import six
from qt4a.androiddriver.adb import ADB
from qt4a.androiddriver.clientsocket import DirectAndroidSpyClient
Expand Down Expand Up @@ -127,8 +129,10 @@ def is_package_installed(self, pkg_name, pkg_size, pkg_md5):
:param pkg_md5: 安装包md5
:type pkg_md5: string
"""
timeout = 60
ret = self.run_driver_cmd(
"isPackageInstalled", pkg_name, pkg_size, pkg_md5, root=self.adb.is_rooted()
"isPackageInstalled", pkg_name, pkg_size, pkg_md5, root=self.adb.is_rooted(),
timeout=timeout
)
return "true" in ret

Expand Down Expand Up @@ -295,12 +299,32 @@ def get_screen_size(self):
width, height = result.split(",")
return int(width), int(height)

def _take_screen_shot(self, path, _format='png', quality=90):
"""
使用android系统命令截图
# todo:使用android的java接口替换该方案
"""
# result = self.adb.run_shell_cmd(
# "sh %s/SpyHelper.sh takeScreenshot %s %s %s" % (qt4a_path, path, _format, quality), self.adb.is_rooted())
# if 'true' in result:
# return True
# logger.warn("Take screenshot by SpyHelper.sh failed: %s" % result)
try:
result = self.adb.run_shell_cmd("screencap -p", binary_output=True)
return result
except Exception as e:
logger.warn("Take screenshot failed: %s" % traceback.format_exc(e))
return False

def take_screen_shot(self, path, quality=90):
"""截屏
"""
result = self.adb.run_shell_cmd(
"%s/screenshot capture -q %s" % (qt4a_path, quality), binary_output=True
)
if self.adb.get_sdk_version() >= 29:
result = self._take_screen_shot(path)
else:
result = self.adb.run_shell_cmd(
"%s/screenshot capture -q %s" % (qt4a_path, quality), binary_output=True
)
# 为避免pull文件耗时,直接写到stdout
if len(result) < 256:
logger.warn("Take screenshot failed: %s" % result)
Expand Down
Binary file modified qt4a/androiddriver/tools/arm64-v8a/droid_inject
Binary file not shown.
Binary file modified qt4a/androiddriver/tools/arm64-v8a/droid_inject64
Binary file not shown.
Binary file modified qt4a/androiddriver/tools/armeabi-v7a/droid_inject
Binary file not shown.
Binary file modified qt4a/androiddriver/tools/armeabi/droid_inject
Binary file not shown.
2 changes: 1 addition & 1 deletion qt4a/androiddriver/tools/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
193
194
Binary file modified qt4a/androiddriver/tools/x86/droid_inject
Binary file not shown.
1 change: 1 addition & 0 deletions qt4a/device.py
Original file line number Diff line number Diff line change
Expand Up @@ -747,6 +747,7 @@ def read_logcat(self, tag, process_name_pattern, pattern, num=1):
pat = re.compile(r'^\[(.+)\(\d+\)\]\s+\[.+\]\s+\w/(.+)\(\s*\d+\):\s+(.+)$')
log_pat = re.compile(pattern)
log_list = self.adb.get_log(False)
log_list = [i.decode("utf-8") for i in log_list]
result_list = []
k = 0
for i in range(len(log_list) - 1, -1, -1):
Expand Down