Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: honeynet/droidbot
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: coinse/droidbot
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Can’t automatically merge. Don’t worry, you can still create the pull request.
  • 1 commit
  • 4 files changed
  • 1 contributor

Commits on Oct 27, 2023

  1. Add minor fixes

    testing-agent committed Oct 27, 2023
    Copy the full SHA
    20bca91 View commit details
Showing with 22 additions and 11 deletions.
  1. +1 −1 droidbot/adapter/logcat.py
  2. +4 −1 droidbot/app.py
  3. +15 −7 droidbot/device.py
  4. +2 −2 droidbot/input_event.py
2 changes: 1 addition & 1 deletion droidbot/adapter/logcat.py
Original file line number Diff line number Diff line change
@@ -63,7 +63,7 @@ def handle_output(self):
continue
line = self.process.stdout.readline()
if not isinstance(line, str):
line = line.decode()
line = line.decode(errors='ignore')
self.recent_lines.append(line)
self.parse_line(line)
if f is not None:
5 changes: 4 additions & 1 deletion droidbot/app.py
Original file line number Diff line number Diff line change
@@ -28,7 +28,10 @@ def __init__(self, app_path, output_dir=None):
from androguard.core.bytecodes.apk import APK
self.apk = APK(self.app_path)
self.package_name = self.apk.get_package()
self.main_activity = self.apk.get_main_activity()
main_activities = self.apk.get_main_activities()
if 'leakcanary.internal.activity.LeakLauncherActivity' in main_activities:
main_activities.remove('leakcanary.internal.activity.LeakLauncherActivity')
self.main_activity = sorted(main_activities)[0]
self.permissions = self.apk.get_permissions()
self.activities = self.apk.get_activities()
self.possible_broadcasts = self.get_possible_broadcasts()
22 changes: 15 additions & 7 deletions droidbot/device.py
Original file line number Diff line number Diff line change
@@ -184,7 +184,7 @@ def disconnect(self):
temp_dir = os.path.join(self.output_dir, "temp")
if os.path.exists(temp_dir):
import shutil
shutil.rmtree(temp_dir)
shutil.rmtree(temp_dir, ignore_errors=True)

def tear_down(self):
for adapter in self.adapters:
@@ -802,7 +802,7 @@ def take_screenshot(self):
remote_image_path = "/sdcard/screen_%s.png" % tag
self.adb.shell("screencap -p %s" % remote_image_path)
self.pull_file(remote_image_path, local_image_path)
self.adb.shell("rm %s" % remote_image_path)
self.adb.shell("rm -f %s" % remote_image_path)

return local_image_path

@@ -812,6 +812,9 @@ def get_current_state(self):
try:
views = self.get_views()
foreground_activity = self.get_top_activity_name()
if foreground_activity is None: # hotfix
foreground_activity = "none.package.name/none.activity.name"

activity_stack = self.get_current_activity_stack()
background_services = self.get_service_names()
screenshot_path = self.take_screenshot()
@@ -881,11 +884,16 @@ def get_views(self):
else:
self.logger.warning("Failed to get views using OpenCV.")
if self.droidbot_app and self.adapters[self.droidbot_app]:
views = self.droidbot_app.get_views()
if views:
return views
else:
self.logger.warning("Failed to get views using Accessibility.")
max_tries = 10
tries = 0
while tries < max_tries:
views = self.droidbot_app.get_views()
if views:
return views
else:
self.logger.warning("Failed to get views using Accessibility. Retrying...")
tries += 1
time.sleep(0.2)

self.logger.warning("failed to get current views!")
return None
4 changes: 2 additions & 2 deletions droidbot/input_event.py
Original file line number Diff line number Diff line change
@@ -683,8 +683,8 @@ def __init__(self, x=None, y=None, view=None, text=None, event_dict=None):

def send(self, device):
x, y = UIEvent.get_xy(x=self.x, y=self.y, view=self.view)
touch_event = TouchEvent(x=x, y=y)
touch_event.send(device)
device.view_long_touch(x=x, y=y, duration=200)
device.view_touch(x=x, y=y)
device.view_set_text(self.text)
return True