test_session.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. # coding: utf-8
  2. #
  3. import pytest
  4. import uiautomator2 as u2
  5. from uiautomator2.exceptions import SessionBrokenError
  6. def test_session_function_exists(dev: u2.Device):
  7. dev.wlan_ip
  8. dev.watcher
  9. dev.jsonrpc
  10. dev.shell
  11. dev.settings
  12. dev.xpath
  13. def test_app_mixin(dev: u2.Device, package_name: str):
  14. assert package_name in dev.app_list()
  15. dev.app_stop(package_name)
  16. assert package_name not in dev.app_list_running()
  17. dev.app_start(package_name)
  18. assert package_name in dev.app_list_running()
  19. demo_pid = dev.app_wait(package_name)
  20. current_info = dev.app_current()
  21. assert demo_pid == current_info['pid']
  22. assert current_info['package'] == package_name
  23. dev.app_start(package_name, stop=True)
  24. assert demo_pid != dev.app_wait(package_name)
  25. def test_session_app(dev: u2.Device, package_name):
  26. dev.app_start(package_name)
  27. assert dev.app_current()['package'] == package_name
  28. dev.app_wait(package_name)
  29. assert package_name in dev.app_list()
  30. assert package_name in dev.app_list_running()
  31. with dev.session("io.appium.android.apis") as sess:
  32. sess(text="App").click()
  33. assert sess.running() is True
  34. dev.app_stop("io.appium.android.apis")
  35. assert sess.running() is False
  36. with pytest.raises(SessionBrokenError):
  37. sess(text="App").click()
  38. with dev.session("io.appium.android.apis") as sess:
  39. sess(text="App").click()
  40. assert sess.running() is True
  41. def test_session_window_size(dev: u2.Device):
  42. assert isinstance(dev.window_size(), tuple)
  43. def test_auto_grant_permissions(dev: u2.Device):
  44. dev.app_auto_grant_permissions("io.appium.android.apis")