mangoautomation 1.0.42__tar.gz → 1.0.46__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mangoautomation might be problematic. Click here for more details.

Files changed (63) hide show
  1. {mangoautomation-1.0.42/mangoautomation.egg-info → mangoautomation-1.0.46}/PKG-INFO +3 -2
  2. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/models/__init__.py +2 -2
  3. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/tools/__init__.py +2 -1
  4. mangoautomation-1.0.46/mangoautomation/tools/_uiautodev.py +49 -0
  5. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/_async_element.py +2 -2
  6. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/_sync_element.py +2 -2
  7. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/android/__init__.py +11 -18
  8. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/android/_application.py +2 -1
  9. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/android/_assertion.py +2 -1
  10. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/android/_element.py +2 -1
  11. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/android/_equipment.py +2 -1
  12. mangoautomation-1.0.46/mangoautomation/uidrive/ios/__init__.py +5 -0
  13. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/async_web/__init__.py +3 -11
  14. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/sync_web/__init__.py +3 -11
  15. {mangoautomation-1.0.42 → mangoautomation-1.0.46/mangoautomation.egg-info}/PKG-INFO +3 -2
  16. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation.egg-info/SOURCES.txt +2 -0
  17. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation.egg-info/requires.txt +2 -1
  18. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/setup.py +3 -2
  19. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/LICENSE +0 -0
  20. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/MANIFEST.in +0 -0
  21. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/README.md +0 -0
  22. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/__init__.py +0 -0
  23. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/enums/__init__.py +0 -0
  24. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/enums/_base_enum.py +0 -0
  25. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/enums/_ui_enum.py +0 -0
  26. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/exceptions/__init__.py +0 -0
  27. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/exceptions/_error_msg.py +0 -0
  28. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/exceptions/_exceptions.py +0 -0
  29. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/models/_ui_model.py +0 -0
  30. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/tools/_mate.py +0 -0
  31. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/__init__.py +0 -0
  32. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/_base_data.py +0 -0
  33. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/_driver_object.py +0 -0
  34. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/android/_customization.py +0 -0
  35. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/android/_new_android.py +0 -0
  36. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/android/_page.py +0 -0
  37. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/pc/__init__.py +0 -0
  38. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/pc/assertion.py +0 -0
  39. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/pc/customization.py +0 -0
  40. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/pc/element.py +0 -0
  41. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/pc/input_device.py +0 -0
  42. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/pc/new_windows.py +0 -0
  43. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/__init__.py +0 -0
  44. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/async_web/_assertion.py +0 -0
  45. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/async_web/_browser.py +0 -0
  46. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/async_web/_customization.py +0 -0
  47. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/async_web/_element.py +0 -0
  48. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/async_web/_input_device.py +0 -0
  49. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/async_web/_new_browser.py +0 -0
  50. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/async_web/_page.py +0 -0
  51. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/sync_web/_assertion.py +0 -0
  52. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/sync_web/_browser.py +0 -0
  53. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/sync_web/_customization.py +0 -0
  54. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/sync_web/_element.py +0 -0
  55. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/sync_web/_input_device.py +0 -0
  56. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/sync_web/_new_browser.py +0 -0
  57. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation/uidrive/web/sync_web/_page.py +0 -0
  58. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation.egg-info/dependency_links.txt +0 -0
  59. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/mangoautomation.egg-info/top_level.txt +0 -0
  60. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/setup.cfg +0 -0
  61. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/tests/__init__.py +0 -0
  62. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/tests/test_ui_and.py +0 -0
  63. {mangoautomation-1.0.42 → mangoautomation-1.0.46}/tests/test_ui_web.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mangoautomation
3
- Version: 1.0.42
3
+ Version: 1.0.46
4
4
  Summary: 测试工具
5
5
  Home-page: https://gitee.com/mao-peng/testkit
6
6
  Author: 毛鹏
@@ -12,8 +12,9 @@ Requires-Dist: pydantic==2.9.2
12
12
  Requires-Dist: playwright==1.43.0
13
13
  Requires-Dist: uiautomation==2.0.20
14
14
  Requires-Dist: uiautomator2==3.2.5
15
- Requires-Dist: mangotools>=1.0.23
15
+ Requires-Dist: mangotools>=1.1.12
16
16
  Requires-Dist: adbutils~=2.8.9
17
+ Requires-Dist: uiautodev==0.9.0
17
18
 
18
19
  # testkit
19
20
 
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
- # @Project: 芒果测试平台# @Description:
3
- # @Time : 2023-09-09 23:17
2
+ # @Project: 芒果测试平台
3
+ # @Description:# @Time : 2023-09-09 23:17
4
4
  # @Author : 毛鹏
5
5
  import sys
6
6
 
@@ -6,8 +6,9 @@
6
6
  import sys
7
7
 
8
8
  from ..tools._mate import Meta
9
+ from ..tools._uiautodev import start_uiautodev, stop_uiautodev
9
10
 
10
11
  python_version = sys.version_info
11
12
  if f"{python_version.major}.{python_version.minor}" != "3.10":
12
13
  raise Exception("必须使用>Python3.10.4")
13
- __all__ = ['Meta']
14
+ __all__ = ['Meta', 'start_uiautodev', 'stop_uiautodev']
@@ -0,0 +1,49 @@
1
+ # -*- coding: utf-8 -*-
2
+ # @Project: 芒果测试平台
3
+ # @Description:
4
+ # @Time : 2025-07-01 10:43
5
+ # @Author : 毛鹏
6
+
7
+ import subprocess
8
+
9
+ import time
10
+
11
+ uiautodev_process = None
12
+
13
+
14
+ def start_uiautodev():
15
+ """启动 uiautodev 服务"""
16
+ global uiautodev_process
17
+ if uiautodev_process is not None:
18
+ return "uiautodev 服务已在运行!"
19
+ try:
20
+ # 启动 uiautodev 服务(后台运行)
21
+ uiautodev_process = subprocess.Popen(
22
+ ['uiauto.dev'],
23
+ stdout=subprocess.PIPE,
24
+ stderr=subprocess.PIPE,
25
+ text=True
26
+ )
27
+ print("uiautodev 服务启动成功!PID:", uiautodev_process.pid)
28
+ return 'https://uiauto.devsleep.com/'
29
+ except Exception as e:
30
+ return f"启动 uiautodev 服务失败:{e}"
31
+
32
+
33
+ def stop_uiautodev():
34
+ """关闭 uiautodev 服务"""
35
+ global uiautodev_process
36
+
37
+ if uiautodev_process is None:
38
+ return "uiautodev 服务未运行!"
39
+ try:
40
+ uiautodev_process.terminate()
41
+ uiautodev_process.wait(timeout=5)
42
+ return "uiautodev 服务已关闭"
43
+ except subprocess.TimeoutExpired:
44
+ uiautodev_process.kill()
45
+ return "uiautodev 服务被强制终止"
46
+ except Exception as e:
47
+ return f"关闭 uiautodev 服务失败:{e}"
48
+ finally:
49
+ uiautodev_process = None
@@ -10,7 +10,7 @@ from typing import Optional
10
10
 
11
11
  from playwright._impl._errors import TargetClosedError, Error
12
12
 
13
- from mangotools.assertion import PublicAssertion
13
+ from mangotools.assertion import MangoAssertion
14
14
  from mangotools.decorator import async_retry
15
15
  from mangotools.enums import StatusEnum
16
16
  from ..enums import ElementOperationEnum, DriveTypeEnum
@@ -221,7 +221,7 @@ class AsyncElement(AsyncWebDevice, AndroidDriver):
221
221
  if is_ass:
222
222
  if callable(getattr(AsyncWebAssertion, self.element_model.ope_key, None)):
223
223
  i.v = loc
224
- elif callable(getattr(PublicAssertion, self.element_model.ope_key, None)):
224
+ elif callable(getattr(MangoAssertion(), self.element_model.ope_key, None)):
225
225
  i.v = self.element_result_model.element_text
226
226
  else:
227
227
  i.v = loc
@@ -10,7 +10,7 @@ from typing import Optional
10
10
  import time
11
11
  from playwright._impl._errors import TargetClosedError, Error
12
12
 
13
- from mangotools.assertion import PublicAssertion
13
+ from mangotools.assertion import MangoAssertion
14
14
  from mangotools.decorator import sync_retry
15
15
  from mangotools.enums import StatusEnum
16
16
  from ..enums import ElementOperationEnum, DriveTypeEnum
@@ -221,7 +221,7 @@ class SyncElement(SyncWebDevice, AndroidDriver):
221
221
  if is_ass:
222
222
  if callable(getattr(SyncWebAssertion, self.element_model.ope_key, None)):
223
223
  i.v = loc
224
- elif callable(getattr(PublicAssertion, self.element_model.ope_key, None)):
224
+ elif callable(getattr(MangoAssertion(), self.element_model.ope_key, None)):
225
225
  i.v = self.element_result_model.element_text
226
226
  else:
227
227
  i.v = loc
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
- # @Project: 芒果测试平台# @Description:
2
+ # @Project: 芒果测试平台
3
+ # @Description:
3
4
  # @Time : 2023-09-09 23:17
4
5
  # @Author : 毛鹏
5
6
 
@@ -7,8 +8,7 @@ from uiautomator2 import UiObject, UiObjectNotFoundError
7
8
  from uiautomator2.exceptions import XPathElementNotFoundError
8
9
  from uiautomator2.xpath import XPathSelector
9
10
 
10
- from mangotools.assertion import PublicAssertion
11
- from mangotools.assertion import SqlAssertion
11
+ from mangotools.assertion import MangoAssertion
12
12
  from ..android._application import AndroidApplication
13
13
  from ..android._assertion import AndroidAssertion
14
14
  from ..android._customization import AndroidCustomization
@@ -65,28 +65,17 @@ class AndroidDriver(AndroidPage,
65
65
 
66
66
  def a_assertion_element(self, name, ope_key, ope_value):
67
67
  self.base_data.log.debug(f'断言元素,名称:{name},key:{ope_key},value:{ope_value}')
68
-
69
68
  is_method = callable(getattr(AndroidAssertion(self.base_data), ope_key, None))
70
- is_method_public = callable(getattr(PublicAssertion, ope_key, None))
71
-
72
- if is_method or is_method_public:
69
+ if is_method:
73
70
  if ope_value['value'] is None:
74
71
  raise MangoAutomationError(*ERROR_MSG_0031, value=(name,))
75
-
76
72
  try:
77
73
  if is_method:
78
74
  self.base_data.log.debug(f'开始断言-1,方法:{ope_key},断言值:{ope_value}')
79
75
  Mango.s_e(AndroidAssertion(self.base_data), ope_key, ope_value)
80
- elif is_method_public:
81
- self.base_data.log.debug(f'开始断言-2,方法:{ope_key},断言值:{ope_value}')
82
- Mango.s_e(PublicAssertion, ope_key, ope_value)
83
76
  else:
84
- if self.base_data.mysql_connect is not None:
85
- SqlAssertion.mysql_obj = self.base_data.mysql_connect
86
- self.base_data.log.debug(f'开始断言-3,方法:sql相等端游,实际值:{ope_value}')
87
- SqlAssertion.sql_is_equal(**ope_value)
88
- else:
89
- raise MangoAutomationError(*ERROR_MSG_0019)
77
+ self.base_data.log.debug(f'开始断言-2,方法:{ope_key},断言值:{ope_value}')
78
+ Mango.s_e(MangoAssertion(self.base_data.mysql_connect).ass(ope_key, ope_value))
90
79
  except AssertionError as error:
91
80
  self.base_data.log.error(f'安卓自动化失败-1,类型:{type(error)},失败详情:{error}')
92
81
  raise MangoAutomationError(*ERROR_MSG_0017, value=error.args)
@@ -124,4 +113,8 @@ class AndroidDriver(AndroidPage,
124
113
  text = self.a_get_text(loc)
125
114
  except Exception:
126
115
  pass
127
- return loc, loc.count, text
116
+ if exp == ElementExpEnum.XPATH.value:
117
+ count = len(loc.all())
118
+ else:
119
+ count = loc.count
120
+ return loc, count, text
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
- # @Project: 芒果测试平台# @Description:
2
+ # @Project: 芒果测试平台
3
+ # @Description:
3
4
  # @Time : 2023-09-09 23:17
4
5
  # @Author : 毛鹏
5
6
  import time
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
- # @Project: 芒果测试平台# @Description:
2
+ # @Project: 芒果测试平台
3
+ # @Description:
3
4
  # @Time : 2023-09-09 23:17
4
5
  # @Author : 毛鹏
5
6
  from uiautomator2 import UiObject
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
- # @Project: 芒果测试平台# @Description:
2
+ # @Project: 芒果测试平台
3
+ # @Description:
3
4
  # @Time : 2023-09-09 23:17
4
5
  # @Author : 毛鹏
5
6
  import os.path
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
- # @Project: 芒果测试平台# @Description:
2
+ # @Project: 芒果测试平台
3
+ # @Description:
3
4
  # @Time : 03-09-09 3:17
4
5
  # @Author : 毛鹏
5
6
  from time import sleep
@@ -0,0 +1,5 @@
1
+ # -*- coding: utf-8 -*-
2
+ # @Project: 芒果测试平台
3
+ # @Description:
4
+ # @Time : 2025-07-03 14:38
5
+ # @Author : 毛鹏
@@ -9,7 +9,7 @@ import traceback
9
9
  from playwright._impl._errors import TimeoutError, Error
10
10
  from playwright.async_api._generated import Locator
11
11
 
12
- from mangotools.assertion import PublicAssertion, SqlAssertion
12
+ from mangotools.assertion import MangoAssertion
13
13
  from mangotools.enums import StatusEnum
14
14
  from mangotools.mangos import Mango
15
15
  from ....enums import ElementExpEnum, ElementOperationEnum
@@ -67,7 +67,6 @@ class AsyncWebDevice(AsyncWebBrowser,
67
67
  async def web_assertion_element(self, name, ope_key, ope_value):
68
68
  self.base_data.log.debug(f'断言元素,名称:{name},key:{ope_key},value:{ope_value}')
69
69
  is_method = callable(getattr(AsyncWebAssertion, ope_key, None))
70
- is_method_public = callable(getattr(PublicAssertion, ope_key, None))
71
70
  try:
72
71
  if is_method:
73
72
  if ope_value.get('actual', None) is None:
@@ -75,16 +74,9 @@ class AsyncWebDevice(AsyncWebBrowser,
75
74
  raise MangoAutomationError(*ERROR_MSG_0031, value=(name,))
76
75
  self.base_data.log.debug(f'开始断言-1,方法:{ope_key},断言值:{ope_value}')
77
76
  await Mango.a_e(AsyncWebAssertion(self.base_data), ope_key, ope_value)
78
- elif is_method_public:
79
- self.base_data.log.debug(f'开始断言-2,方法:{ope_key},断言值:{ope_value}')
80
- Mango.s_e(PublicAssertion, ope_key, ope_value)
81
77
  else:
82
- if self.base_data.mysql_connect is not None:
83
- SqlAssertion.mysql_obj = self.base_data.mysql_connect
84
- self.base_data.log.debug(f'开始断言-3,方法:sql相等端游,实际值:{ope_value}')
85
- await SqlAssertion.sql_is_equal(**ope_value)
86
- else:
87
- raise MangoAutomationError(*ERROR_MSG_0019)
78
+ self.base_data.log.debug(f'开始断言-2,方法:{ope_key},断言值:{ope_value}')
79
+ Mango.s_e(MangoAssertion(self.base_data.mysql_connect).ass(ope_key, ope_value))
88
80
  except AssertionError as error:
89
81
  self.base_data.log.debug(f'WEB自动化断言失败-1,类型:{type(error)},失败详情:{error}')
90
82
  raise MangoAutomationError(*ERROR_MSG_0017, value=error.args)
@@ -9,7 +9,7 @@ import traceback
9
9
  from playwright._impl._errors import TimeoutError, Error
10
10
  from playwright.sync_api._generated import Locator
11
11
 
12
- from mangotools.assertion import PublicAssertion, SqlAssertion
12
+ from mangotools.assertion import MangoAssertion
13
13
  from mangotools.enums import StatusEnum
14
14
  from mangotools.mangos import Mango
15
15
  from ....enums import ElementExpEnum
@@ -67,23 +67,15 @@ class SyncWebDevice(SyncWebBrowser,
67
67
  def web_assertion_element(self, name, ope_key, ope_value):
68
68
  self.base_data.log.debug(f'断言元素,名称:{name},key:{ope_key},value:{ope_value}')
69
69
  is_method = callable(getattr(SyncWebAssertion, ope_key, None))
70
- is_method_public = callable(getattr(PublicAssertion, ope_key, None))
71
70
  try:
72
71
  if is_method:
73
72
  if ope_value.get('actual', None) is None:
74
73
  raise MangoAutomationError(*ERROR_MSG_0031, value=(name,))
75
74
  self.base_data.log.debug(f'开始断言-1,方法:{ope_key},断言值:{ope_value}')
76
75
  Mango.s_e(SyncWebAssertion(self.base_data), ope_key, ope_value)
77
- elif is_method_public:
78
- self.base_data.log.debug(f'开始断言-2,方法:{ope_key},断言值:{ope_value}')
79
- Mango.s_e(PublicAssertion, ope_key, ope_value)
80
76
  else:
81
- if self.base_data.mysql_connect is not None:
82
- SqlAssertion.mysql_obj = self.base_data.mysql_connect
83
- self.base_data.log.debug(f'开始断言-3,方法:sql相等端游,实际值:{ope_value}')
84
- SqlAssertion.sql_is_equal(**ope_value)
85
- else:
86
- raise MangoAutomationError(*ERROR_MSG_0019)
77
+ self.base_data.log.debug(f'开始断言-2,方法:{ope_key},断言值:{ope_value}')
78
+ Mango.s_e(MangoAssertion(self.base_data.mysql_connect).ass(ope_key, ope_value))
87
79
  except AssertionError as error:
88
80
  self.base_data.log.debug(f'WEB自动化断言失败-1,类型:{type(error)},失败详情:{error}')
89
81
  raise MangoAutomationError(*ERROR_MSG_0017, value=error.args)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mangoautomation
3
- Version: 1.0.42
3
+ Version: 1.0.46
4
4
  Summary: 测试工具
5
5
  Home-page: https://gitee.com/mao-peng/testkit
6
6
  Author: 毛鹏
@@ -12,8 +12,9 @@ Requires-Dist: pydantic==2.9.2
12
12
  Requires-Dist: playwright==1.43.0
13
13
  Requires-Dist: uiautomation==2.0.20
14
14
  Requires-Dist: uiautomator2==3.2.5
15
- Requires-Dist: mangotools>=1.0.23
15
+ Requires-Dist: mangotools>=1.1.12
16
16
  Requires-Dist: adbutils~=2.8.9
17
+ Requires-Dist: uiautodev==0.9.0
17
18
 
18
19
  # testkit
19
20
 
@@ -18,6 +18,7 @@ mangoautomation/models/__init__.py
18
18
  mangoautomation/models/_ui_model.py
19
19
  mangoautomation/tools/__init__.py
20
20
  mangoautomation/tools/_mate.py
21
+ mangoautomation/tools/_uiautodev.py
21
22
  mangoautomation/uidrive/__init__.py
22
23
  mangoautomation/uidrive/_async_element.py
23
24
  mangoautomation/uidrive/_base_data.py
@@ -31,6 +32,7 @@ mangoautomation/uidrive/android/_element.py
31
32
  mangoautomation/uidrive/android/_equipment.py
32
33
  mangoautomation/uidrive/android/_new_android.py
33
34
  mangoautomation/uidrive/android/_page.py
35
+ mangoautomation/uidrive/ios/__init__.py
34
36
  mangoautomation/uidrive/pc/__init__.py
35
37
  mangoautomation/uidrive/pc/assertion.py
36
38
  mangoautomation/uidrive/pc/customization.py
@@ -3,5 +3,6 @@ pydantic==2.9.2
3
3
  playwright==1.43.0
4
4
  uiautomation==2.0.20
5
5
  uiautomator2==3.2.5
6
- mangotools>=1.0.23
6
+ mangotools>=1.1.12
7
7
  adbutils~=2.8.9
8
+ uiautodev==0.9.0
@@ -1,6 +1,6 @@
1
1
  from setuptools import setup, find_packages
2
2
 
3
- __version__ = '1.0.42'
3
+ __version__ = '1.0.46'
4
4
 
5
5
  with open("README.md", "r", encoding='utf-8') as fh:
6
6
  long_description = fh.read()
@@ -21,8 +21,9 @@ setup(
21
21
  'playwright==1.43.0',
22
22
  'uiautomation==2.0.20',
23
23
  'uiautomator2==3.2.5',
24
- 'mangotools>=1.0.23',
24
+ 'mangotools>=1.1.12',
25
25
  'adbutils~=2.8.9',
26
+ 'uiautodev==0.9.0',
26
27
 
27
28
  ],
28
29
  classifiers=[