mangoautomation 1.1.21__py3-none-any.whl → 1.1.22__py3-none-any.whl

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 (53) hide show
  1. mangoautomation/__init__.py +1 -1
  2. mangoautomation/enums/__init__.py +0 -1
  3. mangoautomation/exceptions/__init__.py +0 -1
  4. mangoautomation/exceptions/error_msg.py +1 -1
  5. mangoautomation/models/__init__.py +0 -1
  6. mangoautomation/models/_ui_model.py +1 -1
  7. mangoautomation/tools/__init__.py +0 -1
  8. mangoautomation/tools/_uiautodev.py +0 -2
  9. mangoautomation/uidrive/__init__.py +5 -7
  10. mangoautomation/uidrives/__init__.py +22 -0
  11. mangoautomation/{uidrive → uidrives}/_async_element.py +9 -7
  12. mangoautomation/{uidrive → uidrives}/_driver_object.py +4 -4
  13. mangoautomation/{uidrive → uidrives}/_sync_element.py +5 -6
  14. mangoautomation/{uidrive → uidrives}/android/_application.py +1 -1
  15. mangoautomation/{uidrive → uidrives}/android/_assertion.py +1 -1
  16. mangoautomation/{uidrive → uidrives}/android/_customization.py +1 -1
  17. mangoautomation/{uidrive → uidrives}/android/_element.py +3 -3
  18. mangoautomation/{uidrive → uidrives}/android/_equipment.py +1 -1
  19. mangoautomation/{uidrive → uidrives}/android/_page.py +1 -1
  20. mangoautomation/{uidrive → uidrives}/pc/__init__.py +3 -3
  21. mangoautomation/{uidrive → uidrives}/pc/customization.py +1 -1
  22. mangoautomation/{uidrive → uidrives}/pc/element.py +1 -1
  23. mangoautomation/{uidrive → uidrives}/pc/input_device.py +1 -1
  24. mangoautomation/{uidrive → uidrives}/web/async_web/__init__.py +8 -8
  25. mangoautomation/{uidrive → uidrives}/web/async_web/_assertion.py +1 -1
  26. mangoautomation/{uidrive → uidrives}/web/async_web/_browser.py +2 -2
  27. mangoautomation/{uidrive → uidrives}/web/async_web/_customization.py +1 -1
  28. mangoautomation/{uidrive → uidrives}/web/async_web/_element.py +3 -3
  29. mangoautomation/{uidrive → uidrives}/web/async_web/_input_device.py +1 -1
  30. mangoautomation/{uidrive → uidrives}/web/async_web/_page.py +1 -1
  31. mangoautomation/{uidrive → uidrives}/web/sync_web/__init__.py +8 -8
  32. mangoautomation/{uidrive → uidrives}/web/sync_web/_assertion.py +1 -1
  33. mangoautomation/{uidrive → uidrives}/web/sync_web/_browser.py +3 -3
  34. mangoautomation/{uidrive → uidrives}/web/sync_web/_customization.py +1 -1
  35. mangoautomation/{uidrive → uidrives}/web/sync_web/_element.py +3 -3
  36. mangoautomation/{uidrive → uidrives}/web/sync_web/_input_device.py +1 -1
  37. mangoautomation/{uidrive → uidrives}/web/sync_web/_page.py +2 -2
  38. {mangoautomation-1.1.21.dist-info → mangoautomation-1.1.22.dist-info}/METADATA +2 -2
  39. mangoautomation-1.1.22.dist-info/RECORD +59 -0
  40. tests/test_ui_web.py +26 -30
  41. mangoautomation-1.1.21.dist-info/RECORD +0 -58
  42. /mangoautomation/{uidrive → uidrives}/_base_data.py +0 -0
  43. /mangoautomation/{uidrive → uidrives}/android/__init__.py +0 -0
  44. /mangoautomation/{uidrive → uidrives}/android/_new_android.py +0 -0
  45. /mangoautomation/{uidrive → uidrives}/ios/__init__.py +0 -0
  46. /mangoautomation/{uidrive → uidrives}/pc/assertion.py +0 -0
  47. /mangoautomation/{uidrive → uidrives}/pc/new_windows.py +0 -0
  48. /mangoautomation/{uidrive → uidrives}/web/__init__.py +0 -0
  49. /mangoautomation/{uidrive → uidrives}/web/async_web/_new_browser.py +0 -0
  50. /mangoautomation/{uidrive → uidrives}/web/sync_web/_new_browser.py +0 -0
  51. {mangoautomation-1.1.21.dist-info → mangoautomation-1.1.22.dist-info}/LICENSE +0 -0
  52. {mangoautomation-1.1.21.dist-info → mangoautomation-1.1.22.dist-info}/WHEEL +0 -0
  53. {mangoautomation-1.1.21.dist-info → mangoautomation-1.1.22.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # @Project: 芒果测试平台
3
3
  # @Description:
4
- # @Time : 2024-09-07 22:15
4
+ # @Time : 2025-10-22 09:50
5
5
  # @Author : 毛鹏
@@ -3,7 +3,6 @@
3
3
  # @Description:
4
4
  # @Time : 2023-04-29 11:23
5
5
  # @Author : 毛鹏
6
- import sys
7
6
 
8
7
  from ..enums._ui_enum import ElementExpEnum, ElementOperationEnum, DeviceEnum, BrowserTypeEnum, DriveTypeEnum
9
8
 
@@ -3,7 +3,6 @@
3
3
  # @Description:
4
4
  # @Time : 2023-07-07 10:14
5
5
  # @Author : 毛鹏
6
- import sys
7
6
 
8
7
  from ._exceptions import MangoAutomationError
9
8
 
@@ -14,7 +14,7 @@ ERROR_MSG_0007 = (4007, '安卓设备被关闭,请检查设备')
14
14
  ERROR_MSG_0008 = (4008, '浏览器类型不正确,请联系管理员检查')
15
15
  ERROR_MSG_0009 = (4009, '浏览器路径不正确,请手动设置一个正确的浏览器路径,现在的路径:{}')
16
16
  ERROR_MSG_0010 = (4010, '浏览器被关闭,请不要手动关闭浏览器')
17
- ERROR_MSG_0011 = (4011, '操作元素【{}】超时,请检查元素可见但是是否可操作或调整定位方式')
17
+ ERROR_MSG_0011 = (4011, '操作元素【{}】超时,请检查元素是否可见,或可以进行对应的操作')
18
18
  ERROR_MSG_0012 = (4012, '操作失败,请检查输入的值是否有空字符串,null或不满足传参的值')
19
19
  ERROR_MSG_0013 = (
20
20
  313, '打开url时超时,分为2个问题:1.启用的浏览器过多,应当减少浏览器并发个数;2.自行查看为啥60秒还未打开:{}')
@@ -2,7 +2,6 @@
2
2
  # @Project: 芒果测试平台
3
3
  # @Description:# @Time : 2023-09-09 23:17
4
4
  # @Author : 毛鹏
5
- import sys
6
5
 
7
6
  from ..models._ui_model import ElementModel, ElementResultModel, ElementListResultModel
8
7
 
@@ -22,7 +22,7 @@ class ElementListModel(BaseModel):
22
22
  exp: int
23
23
  loc: str
24
24
  sub: int | None = None
25
- is_iframe: int | None
25
+ is_iframe: int | None = None
26
26
 
27
27
 
28
28
  class ElementModel(BaseModel):
@@ -3,7 +3,6 @@
3
3
  # @Description:
4
4
  # @Time : 2025-04-15 11:54
5
5
  # @Author : 毛鹏
6
- import sys
7
6
 
8
7
  from ..tools._mate import Meta
9
8
  from ..tools._uiautodev import start_uiautodev, stop_uiautodev
@@ -6,8 +6,6 @@
6
6
 
7
7
  import subprocess
8
8
 
9
- import time
10
-
11
9
  uiautodev_process = None
12
10
 
13
11
 
@@ -2,17 +2,15 @@
2
2
  # @Project: 芒果测试平台
3
3
  # @Description: # @Time : 2023-07-15 11:57
4
4
  # @Author : 毛鹏
5
- import sys
6
-
7
- from ..uidrive._async_element import AsyncElement
8
- from ..uidrive._base_data import BaseData
9
- from ..uidrive._driver_object import DriverObject
10
- from ..uidrive._sync_element import SyncElement
11
-
5
+ from ..uidrives import *
12
6
 
13
7
  __all__ = [
14
8
  'AsyncElement',
15
9
  'BaseData',
16
10
  'DriverObject',
17
11
  'SyncElement',
12
+ 'AsyncWebDevice',
13
+ 'SyncWebDevice',
14
+ 'AsyncWebCustomization',
15
+ 'SyncWebCustomization',
18
16
  ]
@@ -0,0 +1,22 @@
1
+ # -*- coding: utf-8 -*-
2
+ # @Project: 芒果测试平台
3
+ # @Description: # @Time : 2023-07-15 11:57
4
+ # @Author : 毛鹏
5
+
6
+ from .web.async_web import AsyncWebDevice, AsyncWebCustomization
7
+ from .web.sync_web import SyncWebDevice, SyncWebCustomization
8
+ from ..uidrives._async_element import AsyncElement
9
+ from ..uidrives._base_data import BaseData
10
+ from ..uidrives._driver_object import DriverObject
11
+ from ..uidrives._sync_element import SyncElement
12
+
13
+ __all__ = [
14
+ 'AsyncElement',
15
+ 'BaseData',
16
+ 'DriverObject',
17
+ 'SyncElement',
18
+ 'AsyncWebDevice',
19
+ 'SyncWebDevice',
20
+ 'AsyncWebCustomization',
21
+ 'SyncWebCustomization',
22
+ ]
@@ -18,8 +18,8 @@ from ..enums import ElementOperationEnum, DriveTypeEnum
18
18
  from ..exceptions import MangoAutomationError
19
19
  from ..exceptions.error_msg import *
20
20
  from ..models import ElementResultModel, ElementModel, ElementListResultModel
21
- from ..uidrive.android import AndroidDriver
22
- from ..uidrive.web.async_web import AsyncWebDevice, AsyncWebAssertion
21
+ from ..uidrives.android import AndroidDriver
22
+ from ..uidrives.web.async_web import AsyncWebDevice, AsyncWebAssertion
23
23
 
24
24
 
25
25
  class AsyncElement(AsyncWebDevice, AndroidDriver):
@@ -45,7 +45,7 @@ class AsyncElement(AsyncWebDevice, AndroidDriver):
45
45
 
46
46
  async def element_main(self,
47
47
  element_model: ElementModel,
48
- element_list_model: list[ElementModel]) -> ElementResultModel:
48
+ element_list_model: list[ElementModel] | None = None) -> ElementResultModel:
49
49
  self.element_model = element_model
50
50
  self.element_list_model = element_list_model
51
51
  self.element_result_model = ElementResultModel(
@@ -196,6 +196,10 @@ class AsyncElement(AsyncWebDevice, AndroidDriver):
196
196
  async def __custom(self):
197
197
  for i in self.element_model.custom:
198
198
  self.base_data.test_data.set_cache(i.get('key'), self.base_data.test_data.replace(i.get('value')))
199
+ for i in self.element_model.custom:
200
+ value = self.base_data.test_data.replace(i.get('value'))
201
+ self.base_data.log.debug(f'开始执行自定义-1:key: {i.get("key")}, value: {value}')
202
+ self.base_data.test_data.set_cache(i.get('key'), value)
199
203
 
200
204
  async def __condition(self):
201
205
  error_list = []
@@ -264,7 +268,6 @@ class AsyncElement(AsyncWebDevice, AndroidDriver):
264
268
  else:
265
269
  i.v = loc
266
270
  i.v = self.base_data.test_data.replace(i.v)
267
-
268
271
  except AttributeError as error:
269
272
  self.base_data.log.debug(
270
273
  f'获取操作值失败-1,类型:{type(error)},失败详情:{error},失败明细:{traceback.format_exc()}')
@@ -284,9 +287,8 @@ class AsyncElement(AsyncWebDevice, AndroidDriver):
284
287
  )
285
288
  if is_screenshot:
286
289
  file_name = f'失败截图-{self.element_model.name}{self.base_data.test_data.get_time_for_min()}.jpg'
287
- file_path = os.path.join(self.base_data.screenshot_path, file_name)
288
- await self.__error_screenshot(file_path)
289
- self.element_result_model.picture_path = file_path
290
+ await self.__error_screenshot(file_name)
291
+ self.element_result_model.picture_path = os.path.join(self.base_data.screenshot_path, file_name)
290
292
  self.element_result_model.picture_name = file_name
291
293
  except MangoAutomationError as error:
292
294
  self.element_result_model.error_message += f'执行过程中发生失败,准备截图时截图失败,失败原因:{error.msg}'
@@ -6,10 +6,10 @@
6
6
 
7
7
  from typing import Optional
8
8
 
9
- from ..uidrive.android._new_android import NewAndroid
10
- from ..uidrive.pc.new_windows import NewWindows
11
- from ..uidrive.web.async_web._new_browser import AsyncWebNewBrowser
12
- from ..uidrive.web.sync_web._new_browser import SyncWebNewBrowser
9
+ from ..uidrives.android._new_android import NewAndroid
10
+ from ..uidrives.pc.new_windows import NewWindows
11
+ from ..uidrives.web.async_web._new_browser import AsyncWebNewBrowser
12
+ from ..uidrives.web.sync_web._new_browser import SyncWebNewBrowser
13
13
 
14
14
 
15
15
  class DriverObject:
@@ -18,8 +18,8 @@ from ..enums import ElementOperationEnum, DriveTypeEnum
18
18
  from ..exceptions import MangoAutomationError
19
19
  from ..exceptions.error_msg import *
20
20
  from ..models import ElementResultModel, ElementModel, ElementListResultModel
21
- from ..uidrive.android import AndroidDriver
22
- from ..uidrive.web.sync_web import SyncWebDevice, SyncWebAssertion
21
+ from ..uidrives.android import AndroidDriver
22
+ from ..uidrives.web.sync_web import SyncWebDevice, SyncWebAssertion
23
23
 
24
24
 
25
25
  class SyncElement(SyncWebDevice, AndroidDriver):
@@ -232,7 +232,7 @@ class SyncElement(SyncWebDevice, AndroidDriver):
232
232
  }
233
233
  if self.drive_type == DriveTypeEnum.WEB.value:
234
234
  loc, ele_quantity, element_text = self.web_find_ele(
235
- **find_params,is_iframe=self.element_model.is_iframe)
235
+ **find_params, is_iframe=self.element_model.elements[random_element].is_iframe)
236
236
  elif self.drive_type == DriveTypeEnum.ANDROID.value:
237
237
  loc, ele_quantity, element_text = self.a_find_ele(**find_params)
238
238
  else:
@@ -284,9 +284,8 @@ class SyncElement(SyncWebDevice, AndroidDriver):
284
284
  )
285
285
  if is_screenshot:
286
286
  file_name = f'失败截图-{self.element_model.name}{self.base_data.test_data.get_time_for_min()}.jpg'
287
- file_path = os.path.join(self.base_data.screenshot_path, file_name)
288
- self.__error_screenshot(file_path)
289
- self.element_result_model.picture_path = file_path
287
+ self.__error_screenshot(file_name)
288
+ self.element_result_model.picture_path = os.path.join(self.base_data.screenshot_path, file_name)
290
289
  self.element_result_model.picture_name = file_name
291
290
  except MangoAutomationError as error:
292
291
  self.element_result_model.error_message += f'执行过程中发生失败,准备截图时截图失败,失败原因:{error.msg}'
@@ -10,7 +10,7 @@ from mangotools.models import MethodModel
10
10
  from ...exceptions import MangoAutomationError
11
11
  from ...exceptions.error_msg import ERROR_MSG_0046
12
12
  from ...tools import Meta
13
- from ...uidrive._base_data import BaseData
13
+ from ...uidrives._base_data import BaseData
14
14
 
15
15
 
16
16
  class AndroidApplication(metaclass=Meta):
@@ -6,7 +6,7 @@
6
6
  from uiautomator2 import UiObject
7
7
 
8
8
  from mangoautomation.tools import Meta
9
- from mangoautomation.uidrive._base_data import BaseData
9
+ from mangoautomation.uidrives._base_data import BaseData
10
10
  from mangotools.decorator import sync_method_callback
11
11
  from mangotools.models import MethodModel
12
12
 
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
  from mangoautomation.tools import Meta
8
- from mangoautomation.uidrive._base_data import BaseData
8
+ from mangoautomation.uidrives._base_data import BaseData
9
9
 
10
10
 
11
11
  class AndroidCustomization(metaclass=Meta):
@@ -9,12 +9,12 @@ import time
9
9
  from uiautomator2 import UiObject
10
10
  from uiautomator2.xpath import XPathSelector
11
11
 
12
+ from mangotools.decorator import sync_method_callback
13
+ from mangotools.models import MethodModel
12
14
  from ...exceptions import MangoAutomationError
13
15
  from ...exceptions.error_msg import ERROR_MSG_0043, ERROR_MSG_0044
14
16
  from ...tools import Meta
15
- from ...uidrive._base_data import BaseData
16
- from mangotools.decorator import sync_method_callback
17
- from mangotools.models import MethodModel
17
+ from ...uidrives._base_data import BaseData
18
18
 
19
19
 
20
20
  class AndroidElement(metaclass=Meta):
@@ -8,7 +8,7 @@ from time import sleep
8
8
  from mangotools.decorator import sync_method_callback
9
9
  from mangotools.models import MethodModel
10
10
  from ...tools import Meta
11
- from ...uidrive._base_data import BaseData
11
+ from ...uidrives._base_data import BaseData
12
12
 
13
13
 
14
14
  class AndroidEquipment(metaclass=Meta):
@@ -9,7 +9,7 @@ from uiautomator2 import Direction
9
9
  from mangotools.decorator import sync_method_callback
10
10
  from mangotools.models import MethodModel
11
11
  from ...tools import Meta
12
- from ...uidrive._base_data import BaseData
12
+ from ...uidrives._base_data import BaseData
13
13
 
14
14
 
15
15
  class AndroidPage(metaclass=Meta):
@@ -24,9 +24,9 @@ else:
24
24
  from uiautomation import Control
25
25
  import uiautomation
26
26
 
27
- from mangoautomation.uidrive._base_data import BaseData
28
- from mangoautomation.uidrive.pc.element import WinElement
29
- from mangoautomation.uidrive.pc.input_device import WinDeviceInput
27
+ from mangoautomation.uidrives._base_data import BaseData
28
+ from mangoautomation.uidrives.pc.element import WinElement
29
+ from mangoautomation.uidrives.pc.input_device import WinDeviceInput
30
30
 
31
31
 
32
32
  class WinDriver(WinElement, WinDeviceInput):
@@ -3,7 +3,7 @@
3
3
  # @Description:
4
4
  # @Time : 2024-08-13 14:07
5
5
  # @Author : 毛鹏
6
- from ...uidrive._base_data import BaseData
6
+ from ...uidrives._base_data import BaseData
7
7
 
8
8
 
9
9
  class PlaywrightCustomization(BaseData):
@@ -1,5 +1,5 @@
1
1
  from ...tools import Meta
2
- from ...uidrive._base_data import BaseData
2
+ from ...uidrives._base_data import BaseData
3
3
 
4
4
 
5
5
  class WinElement(metaclass=Meta):
@@ -4,7 +4,7 @@
4
4
  # @Time : 2024-11-30 23:44
5
5
  # @Author : 毛鹏
6
6
  from ...tools import Meta
7
- from ...uidrive._base_data import BaseData
7
+ from ...uidrives._base_data import BaseData
8
8
 
9
9
 
10
10
  class WinDeviceInput(metaclass=Meta):
@@ -14,13 +14,13 @@ from mangotools.mangos import Mango
14
14
  from ....enums import ElementExpEnum, ElementOperationEnum
15
15
  from ....exceptions import MangoAutomationError
16
16
  from ....exceptions.error_msg import *
17
- from ....uidrive._base_data import BaseData
18
- from ....uidrive.web.async_web._assertion import AsyncWebAssertion
19
- from ....uidrive.web.async_web._browser import AsyncWebBrowser
20
- from ....uidrive.web.async_web._customization import AsyncWebCustomization
21
- from ....uidrive.web.async_web._element import AsyncWebElement
22
- from ....uidrive.web.async_web._input_device import AsyncWebDeviceInput
23
- from ....uidrive.web.async_web._page import AsyncWebPage
17
+ from ....uidrives._base_data import BaseData
18
+ from ....uidrives.web.async_web._assertion import AsyncWebAssertion
19
+ from ....uidrives.web.async_web._browser import AsyncWebBrowser
20
+ from ....uidrives.web.async_web._customization import AsyncWebCustomization
21
+ from ....uidrives.web.async_web._element import AsyncWebElement
22
+ from ....uidrives.web.async_web._input_device import AsyncWebDeviceInput
23
+ from ....uidrives.web.async_web._page import AsyncWebPage
24
24
 
25
25
  re = re
26
26
  __all__ = [
@@ -54,7 +54,7 @@ class AsyncWebDevice(AsyncWebBrowser,
54
54
  try:
55
55
  await Mango.a_e(self, ope_key, ope_value)
56
56
  except TimeoutError as error:
57
- self.base_data.log.error(f'WEB自动化操作失败-1,类型:{type(error)},失败详情:{error}')
57
+ self.base_data.log.debug(f'WEB自动化操作失败-1,类型:{type(error)},失败详情:{error}')
58
58
  raise MangoAutomationError(*ERROR_MSG_0011, value=(name,))
59
59
  except Error as error:
60
60
  self.base_data.log.error(f'WEB自动化操作失败-2,类型:{type(error)},失败详情:{error}')
@@ -10,7 +10,7 @@ from mangotools.models import MethodModel
10
10
  from ....exceptions import MangoAutomationError
11
11
  from ....exceptions.error_msg import ERROR_MSG_0021
12
12
  from ....tools import Meta
13
- from ....uidrive._base_data import BaseData
13
+ from ....uidrives._base_data import BaseData
14
14
 
15
15
 
16
16
  class AsyncWebAssertion(metaclass=Meta):
@@ -53,11 +53,11 @@ class AsyncWebBrowser(metaclass=Meta):
53
53
  raise MangoAutomationError(*ERROR_MSG_0058, value=(url,))
54
54
 
55
55
  @async_method_callback('web', '浏览器操作', 2, [
56
- MethodModel(n='存储路径', f='path', p='请输入截图保存路径', d=True)])
56
+ MethodModel(n='存储路径', f='path', p='请输入截图名称', d=True)])
57
57
  async def w_screenshot(self, path: str):
58
58
  """整个页面截图"""
59
59
  try:
60
- await self.base_data.page.screenshot(path=path, full_page=True, timeout=10000)
60
+ await self.base_data.page.screenshot(path=os.path.join(self.base_data.screenshot_path, path), full_page=True, timeout=10000)
61
61
  except (TargetClosedError, TimeoutError) as error:
62
62
  self.base_data.log.debug(
63
63
  f'截图出现异常失败-1,类型:{type(error)},失败详情:{error},失败明细:{traceback.format_exc()}')
@@ -3,8 +3,8 @@
3
3
  # @Description: # @Time : 2023-04-26 22:22
4
4
  # @Author : 毛鹏
5
5
 
6
- from ....tools import Meta
7
6
  from ..._base_data import BaseData
7
+ from ....tools import Meta
8
8
 
9
9
 
10
10
  class AsyncWebCustomization(metaclass=Meta):
@@ -4,8 +4,8 @@
4
4
  # @Author : 毛鹏
5
5
  import asyncio
6
6
  import os
7
- import time
8
7
 
8
+ import time
9
9
  from playwright.async_api import Locator, Error, TimeoutError
10
10
 
11
11
  from mangotools.decorator import async_method_callback
@@ -237,10 +237,10 @@ class AsyncWebElement(metaclass=Meta):
237
237
 
238
238
  @async_method_callback('web', '元素操作', 15, [
239
239
  MethodModel(f='locating'),
240
- MethodModel(n='保存路径', f='path', p='请输入截图保存路径', d=True)])
240
+ MethodModel(n='保存路径', f='path', p='请输入截图名称', d=True)])
241
241
  async def w_ele_screenshot(self, locating: Locator, path: str):
242
242
  """元素截图"""
243
- await locating.screenshot(path=path)
243
+ await locating.screenshot(path=os.path.join(self.base_data.download_path, path))
244
244
 
245
245
  @async_method_callback('web', '元素操作', 20, [
246
246
  MethodModel(f='locating1'),
@@ -6,7 +6,7 @@
6
6
  from mangotools.decorator import async_method_callback
7
7
  from mangotools.models import MethodModel
8
8
  from ....tools import Meta
9
- from ....uidrive._base_data import BaseData
9
+ from ....uidrives._base_data import BaseData
10
10
 
11
11
 
12
12
  class AsyncWebDeviceInput(metaclass=Meta):
@@ -9,7 +9,7 @@ from playwright.async_api import Locator
9
9
  from mangotools.decorator import async_method_callback
10
10
  from mangotools.models import MethodModel
11
11
  from ....tools import Meta
12
- from ....uidrive._base_data import BaseData
12
+ from ....uidrives._base_data import BaseData
13
13
 
14
14
 
15
15
  class AsyncWebPage(metaclass=Meta):
@@ -14,13 +14,13 @@ from mangotools.mangos import Mango
14
14
  from ....enums import ElementExpEnum
15
15
  from ....exceptions import MangoAutomationError
16
16
  from ....exceptions.error_msg import *
17
- from ....uidrive._base_data import BaseData
18
- from ....uidrive.web.sync_web._assertion import SyncWebAssertion
19
- from ....uidrive.web.sync_web._browser import SyncWebBrowser
20
- from ....uidrive.web.sync_web._customization import SyncWebCustomization
21
- from ....uidrive.web.sync_web._element import SyncWebElement
22
- from ....uidrive.web.sync_web._input_device import SyncWebDeviceInput
23
- from ....uidrive.web.sync_web._page import SyncWebPage
17
+ from ....uidrives._base_data import BaseData
18
+ from ....uidrives.web.sync_web._assertion import SyncWebAssertion
19
+ from ....uidrives.web.sync_web._browser import SyncWebBrowser
20
+ from ....uidrives.web.sync_web._customization import SyncWebCustomization
21
+ from ....uidrives.web.sync_web._element import SyncWebElement
22
+ from ....uidrives.web.sync_web._input_device import SyncWebDeviceInput
23
+ from ....uidrives.web.sync_web._page import SyncWebPage
24
24
 
25
25
  re = re
26
26
  __all__ = [
@@ -54,7 +54,7 @@ class SyncWebDevice(SyncWebBrowser,
54
54
  try:
55
55
  Mango.s_e(self, ope_key, ope_value)
56
56
  except TimeoutError as error:
57
- self.base_data.log.error(f'WEB自动化操作失败-1,类型:{type(error)},失败详情:{error}')
57
+ self.base_data.log.debug(f'WEB自动化操作失败-1,类型:{type(error)},失败详情:{error}')
58
58
  raise MangoAutomationError(*ERROR_MSG_0011, value=(name,))
59
59
  except Error as error:
60
60
  self.base_data.log.error(f'WEB自动化操作失败-2,类型:{type(error)},失败详情:{error}')
@@ -10,7 +10,7 @@ from mangotools.exceptions.error_msg import ERROR_MSG_0021
10
10
  from mangotools.models import MethodModel
11
11
  from ....exceptions import MangoAutomationError
12
12
  from ....tools import Meta
13
- from ....uidrive._base_data import BaseData
13
+ from ....uidrives._base_data import BaseData
14
14
 
15
15
 
16
16
  class SyncWebAssertion(metaclass=Meta):
@@ -15,7 +15,7 @@ from mangotools.models import MethodModel
15
15
  from ....exceptions import MangoAutomationError
16
16
  from ....exceptions.error_msg import ERROR_MSG_0049, ERROR_MSG_0013, ERROR_MSG_0058, ERROR_MSG_0059, ERROR_MSG_0010
17
17
  from ....tools import Meta
18
- from ....uidrive._base_data import BaseData
18
+ from ....uidrives._base_data import BaseData
19
19
 
20
20
 
21
21
  class SyncWebBrowser(metaclass=Meta):
@@ -53,11 +53,11 @@ class SyncWebBrowser(metaclass=Meta):
53
53
  raise MangoAutomationError(*ERROR_MSG_0058, value=(url,))
54
54
 
55
55
  @sync_method_callback('web', '浏览器操作', 2, [
56
- MethodModel(n='保存路径', f='path', p='请输入截图保存路径', d=True)])
56
+ MethodModel(n='保存路径', f='path', p='请输入截图名称', d=True)])
57
57
  def w_screenshot(self, path: str):
58
58
  """整个页面截图"""
59
59
  try:
60
- self.base_data.page.screenshot(path=path, full_page=True, timeout=10000)
60
+ self.base_data.page.screenshot(path=os.path.join(self.base_data.screenshot_path, path), full_page=True, timeout=10000)
61
61
  except (TargetClosedError, TimeoutError) as error:
62
62
  self.base_data.log.debug(
63
63
  f'截图出现异常失败-1,类型:{type(error)},失败详情:{error},失败明细:{traceback.format_exc()}')
@@ -4,7 +4,7 @@
4
4
  # @Author : 毛鹏
5
5
 
6
6
  from ....tools import Meta
7
- from ....uidrive._base_data import BaseData
7
+ from ....uidrives._base_data import BaseData
8
8
 
9
9
 
10
10
  class SyncWebCustomization(metaclass=Meta):
@@ -12,7 +12,7 @@ from mangotools.models import MethodModel
12
12
  from ....exceptions import MangoAutomationError
13
13
  from ....exceptions.error_msg import ERROR_MSG_0024, ERROR_MSG_0056
14
14
  from ....tools import Meta
15
- from ....uidrive._base_data import BaseData
15
+ from ....uidrives._base_data import BaseData
16
16
 
17
17
 
18
18
  class SyncWebElement(metaclass=Meta):
@@ -237,10 +237,10 @@ class SyncWebElement(metaclass=Meta):
237
237
 
238
238
  @sync_method_callback('web', '元素操作', 15, [
239
239
  MethodModel(f='locating'),
240
- MethodModel(n='截图路径', f='path', p='请输入截图保存路径', d=True)])
240
+ MethodModel(n='截图路径', f='path', p='请输入截图名称', d=True)])
241
241
  def w_ele_screenshot(self, locating: Locator, path: str):
242
242
  """元素截图"""
243
- locating.screenshot(path=path)
243
+ locating.screenshot(path=os.path.join(self.base_data.download_path, path))
244
244
 
245
245
  @sync_method_callback('web', '元素操作', 20, [
246
246
  MethodModel(f='locating1'),
@@ -5,7 +5,7 @@
5
5
  from mangotools.decorator import sync_method_callback
6
6
  from mangotools.models import MethodModel
7
7
  from ....tools import Meta
8
- from ....uidrive._base_data import BaseData
8
+ from ....uidrives._base_data import BaseData
9
9
 
10
10
 
11
11
  class SyncWebDeviceInput(metaclass=Meta):
@@ -5,10 +5,10 @@
5
5
  import time
6
6
  from playwright.sync_api import Locator
7
7
 
8
- from ....tools import Meta
9
- from ....uidrive._base_data import BaseData
10
8
  from mangotools.decorator import sync_method_callback
11
9
  from mangotools.models import MethodModel
10
+ from ....tools import Meta
11
+ from ....uidrives._base_data import BaseData
12
12
 
13
13
 
14
14
  class SyncWebPage(metaclass=Meta):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mangoautomation
3
- Version: 1.1.21
3
+ Version: 1.1.22
4
4
  Summary: 测试工具
5
5
  Home-page: https://gitee.com/mao-peng/testkit
6
6
  Author: 毛鹏
@@ -10,7 +10,7 @@ Classifier: Programming Language :: Python :: 3.11
10
10
  Classifier: Programming Language :: Python :: 3.12
11
11
  Classifier: Programming Language :: Python :: 3.13
12
12
  License-File: LICENSE
13
- Requires-Dist: setuptools >=68.2.0
13
+ Requires-Dist: setuptools ==78.1.1
14
14
  Requires-Dist: pydantic >=2.9.2
15
15
  Requires-Dist: playwright ==1.43.0
16
16
  Requires-Dist: uiautomation >=2.0.20
@@ -0,0 +1,59 @@
1
+ mangoautomation/__init__.py,sha256=JxPNVexFQvkBfh0awPNeHxQGU_gtVgYPwD5rYeuHWEk,125
2
+ mangoautomation/enums/__init__.py,sha256=TGdECHZ0U91ZMUHq6AAbn5LDCfdSC5qGFLLUxuQvY-w,375
3
+ mangoautomation/enums/_base_enum.py,sha256=dpaXsdhWY08BhIzi1B1ksh_p18ZTmhWvTYhbd3n_ONQ,1176
4
+ mangoautomation/enums/_ui_enum.py,sha256=mT_MfQ7TEw-BgHIqH0wXTA_yVWsaWnd3iHSHi9E0pgA,4599
5
+ mangoautomation/exceptions/__init__.py,sha256=yQb6XXl9Vi_MLapCJM5W8fP6fEwFgngGaOguUKuQGTs,215
6
+ mangoautomation/exceptions/_exceptions.py,sha256=BiyST1QPivpfIOuKn1gKhpXOyBv6gfip_KvlQuu8ctw,385
7
+ mangoautomation/exceptions/error_msg.py,sha256=zy_RV7agIMqovrApq4zirSkeWGKT2udP5RbuiLdR2gQ,5329
8
+ mangoautomation/models/__init__.py,sha256=PQhhcsUTWP9HjD-Uz9kQmX2izFZn1jfHZRlBGYT2Zdg,311
9
+ mangoautomation/models/_ui_model.py,sha256=W25dDSod9D6WTgiWWJqEn9b5bFUV_VWMtHPkr_BorY0,1794
10
+ mangoautomation/tools/__init__.py,sha256=2iCfzA1NYyaUYCPCTR9cM4zPweSVWj2pGMN6QTBFEWY,284
11
+ mangoautomation/tools/_mate.py,sha256=9lk_EJnAX_OyXbe5WacyHkkcEr2ScBgasl6eUnlklWA,405
12
+ mangoautomation/tools/_uiautodev.py,sha256=2LKRkQXyu1VxSVWwvlLmFFJGfA5aDB1A0gjJg48OeDM,1373
13
+ mangoautomation/uidrive/__init__.py,sha256=9N2DTDyLcmgxAHctBjZOb8LwdDeKQnwEOWZ9kNcM4Uw,350
14
+ mangoautomation/uidrives/__init__.py,sha256=X9o-mHREP_mQUCkE1JUA6oOBsYSpxoV_GjuhnEzpLDs,653
15
+ mangoautomation/uidrives/_async_element.py,sha256=seDinaDqgRqqB6ILqk31u9V-OlAkRKNlCZ99ZMTjYKs,15355
16
+ mangoautomation/uidrives/_base_data.py,sha256=xDjgBJ6CDFajUy18ft-NKe-7vKe7WtgMC9zV6gRrmPY,3946
17
+ mangoautomation/uidrives/_driver_object.py,sha256=bpHxzWdk5Edbd7lwhIPnsRcPpRLpZTYu7OC2mqJjLXg,2059
18
+ mangoautomation/uidrives/_sync_element.py,sha256=-lbwevRWenkiXTfjbAe0IbcMtEze2CM8Cg8-UkPrgBE,14850
19
+ mangoautomation/uidrives/android/__init__.py,sha256=HBYY1L-g7OASchquaUXH7NcpxXpuJVx6Zuw0JbNgq-Y,5524
20
+ mangoautomation/uidrives/android/_application.py,sha256=G94m53cUzzGuXxPIsvoMuFwJ5RWL_xW5HHFE0TIkrBI,2855
21
+ mangoautomation/uidrives/android/_assertion.py,sha256=FH8sxJC4ZXCbVA9KFBp49Tu8LPWyO26EZYAK7cYaoYE,4350
22
+ mangoautomation/uidrives/android/_customization.py,sha256=7C8j2rv2wDkNu425ooxLSDrGHr_CxJ82sXz1-64id_8,382
23
+ mangoautomation/uidrives/android/_element.py,sha256=ggWEFUbrAGWPQXNvD9JpudwowwvYJrgHdrNXyytAEVw,7213
24
+ mangoautomation/uidrives/android/_equipment.py,sha256=Ul61jpoVr162FIu_2QcJtqWil82ZBC-Kn7_VFQWCUsQ,5216
25
+ mangoautomation/uidrives/android/_new_android.py,sha256=WldFsGm5QnJ9QVPtWxRgwCiWSX3jYObFxAPCQ5xSKyg,1636
26
+ mangoautomation/uidrives/android/_page.py,sha256=IaWiN3kniv2GKfudMLRdvyaqbFLuIfGh7H0HeQrDyVA,4621
27
+ mangoautomation/uidrives/ios/__init__.py,sha256=SdxI8e5AOoAb8JTaDoMkObezIluJ50nm2b6zeDHv1PI,125
28
+ mangoautomation/uidrives/pc/__init__.py,sha256=QGbu5WODx4DKokfATV2U_Ar5i-enK7_nOVno10u5W-I,2278
29
+ mangoautomation/uidrives/pc/assertion.py,sha256=mH25hZ2i4T8kA1F2loW_nuPJ-Hb0z1pwILTJqkwwpLA,125
30
+ mangoautomation/uidrives/pc/customization.py,sha256=UkpHWFSYsu_t-GmMRDmii1Bs_Y1eKD34oZfJBFHV2Ng,240
31
+ mangoautomation/uidrives/pc/element.py,sha256=rLoDJEPdVQBEsQHsxuS9Bik9cARVG4y_wCRcr8RrTGM,520
32
+ mangoautomation/uidrives/pc/input_device.py,sha256=P1K_mynCpYEa4BDp1Z63wZafAc0eh-or3cEcuGx5FAY,354
33
+ mangoautomation/uidrives/pc/new_windows.py,sha256=lETHZa7cW8Z0iUShzgVTRxqivkYaOo8WIE58q_8KYfQ,2338
34
+ mangoautomation/uidrives/web/__init__.py,sha256=MgTklzty_SvX4UemCnqJuViq3cIjUgAjFoEtP-mcDWw,123
35
+ mangoautomation/uidrives/web/async_web/__init__.py,sha256=_jG4DvEbNe4EZTFEBKQhgwRxxIzrdK7APmIicFb0zMk,8379
36
+ mangoautomation/uidrives/web/async_web/_assertion.py,sha256=cG8g_iFMlWcAMDyIfPTJ5lx73BpbGZV5PoAbe1uAy4Q,12821
37
+ mangoautomation/uidrives/web/async_web/_browser.py,sha256=xAaawPbY-rj-HZtcy5LcWUQ_jmdN9Dj4yNUxWxXGCbQ,5421
38
+ mangoautomation/uidrives/web/async_web/_customization.py,sha256=LakibDXpSc-MMxMiwDiktoFccgyiUmWxAVpMOobY9_A,347
39
+ mangoautomation/uidrives/web/async_web/_element.py,sha256=5fB4dpILfIjk6MbRfCc6aUizQM3XcNywqEiCfXegXHw,11102
40
+ mangoautomation/uidrives/web/async_web/_input_device.py,sha256=wd36vTwsWdq7f52HmEnAF2sNiFVwNxJ2J5bq-lcuuVk,3441
41
+ mangoautomation/uidrives/web/async_web/_new_browser.py,sha256=v-OXD-uYD7XagupxSlG4g_ZBsRq_Jpo88iwE_A_Ilfs,6202
42
+ mangoautomation/uidrives/web/async_web/_page.py,sha256=B1RbnPWaQWa3Sp57ue2sTgcgEr4kTgSEz0DcpA5lOug,2176
43
+ mangoautomation/uidrives/web/sync_web/__init__.py,sha256=gThDpZPtCFdKrxnVYgAsj_6oha9lMed7xoU4XTsLOys,7945
44
+ mangoautomation/uidrives/web/sync_web/_assertion.py,sha256=GEUGvYd3LgisMTgiinFF-Z6nWqxA4EUbvHenw7rPaW0,12595
45
+ mangoautomation/uidrives/web/sync_web/_browser.py,sha256=_Z6NhhP_6N-cxak3X8yUnPzUet7b1tBpI85iAbzwoyQ,5286
46
+ mangoautomation/uidrives/web/sync_web/_customization.py,sha256=Wir5CIGN6YiyVj1-D_zvSWcFuUvQMP8rJ-8boUaU1Bs,356
47
+ mangoautomation/uidrives/web/sync_web/_element.py,sha256=A76-fLLQL8eA7nWcZNm90lro6m1UviVrJ5mWitg3sNA,10722
48
+ mangoautomation/uidrives/web/sync_web/_input_device.py,sha256=SwsFi4PiS3sg45MPl_NV88nDrg4SmJ14fV8sODByQ58,3288
49
+ mangoautomation/uidrives/web/sync_web/_new_browser.py,sha256=APGUFhOVAW68x-6y9tQLZJkn2utfR-PrpjgP8WE38SE,6149
50
+ mangoautomation/uidrives/web/sync_web/_page.py,sha256=GbVsK7ZBcoMBnKw2VMPWy3Yt9Jqa84qxrB2Ar2d8aR8,2046
51
+ tests/__init__.py,sha256=fdlqghHH7eXneovXweQjn6gVb8jwm6wprtPw5ksV_IA,350
52
+ tests/get_ope.py,sha256=SVhSowMNa87hjzGhFlS0vp-t0RB9yKHOC52FsO93UG4,236
53
+ tests/test_ui_and.py,sha256=A_0pqG6s5Ts02He7P3NwuDSK3g9Q3VP1Sb_P8wq6g0Q,125
54
+ tests/test_ui_web.py,sha256=3MNs5I378338DmRBIDP5u8cxkmvIzOQq-0rajgLY-wk,2319
55
+ mangoautomation-1.1.22.dist-info/LICENSE,sha256=03WP-mgFmo8ofRYDe1HVDQUEUKQZ2q6P6Q-2A4c-46A,1085
56
+ mangoautomation-1.1.22.dist-info/METADATA,sha256=xEFjsxaS8rrt-A4gM3vtnO6GkSlQyxHY8E7krVyVJEo,816
57
+ mangoautomation-1.1.22.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
58
+ mangoautomation-1.1.22.dist-info/top_level.txt,sha256=g-uCmjvEODG8WFbmwbGM0-G0zHntHv8ZsS0PQRaMGtE,22
59
+ mangoautomation-1.1.22.dist-info/RECORD,,
tests/test_ui_web.py CHANGED
@@ -11,67 +11,63 @@ from mangoautomation.uidrive import AsyncElement, BaseData, DriverObject, SyncEl
11
11
  from mangotools.data_processor import DataProcessor
12
12
  from mangotools.log_collector import set_log
13
13
 
14
- log = set_log('D:\GitCode\mango_automation\logs')
14
+ log = set_log('D:\code\mango_automation\logs')
15
15
  test_data = DataProcessor()
16
- element_model_1 = ElementModel(**{
17
- "id": 9,
16
+ element_model = ElementModel(**{
17
+ "id": 3,
18
18
  "type": 0,
19
- "name": "搜索结果",
20
- "loc": "get_by_role(\"link\", name=\"芒果自动化测试平台: 芒果测试平台是UI和API的自动化测试\")",
21
- "exp": 2,
19
+ "name": "设置",
20
+ "elements": [
21
+ {
22
+ "exp": 0,
23
+ "loc": "//span[@name=\"tj_settingicon\"]",
24
+ "sub": None,
25
+ "is_iframe": 0
26
+ }
27
+ ],
22
28
  "sleep": None,
23
- "sub": None,
24
- "is_iframe": 0,
25
- "ope_key": "w_open_new_tab_and_switch",
29
+ "ope_key": "w_hover",
26
30
  "ope_value": [
27
31
  {
28
32
  "f": "locating",
33
+ "n": None,
29
34
  "p": None,
30
35
  "d": False,
31
36
  "v": ""
32
37
  }
33
38
  ],
34
- "key_list": None,
35
- "sql": None,
36
- "key": None,
37
- "value": None
38
- })
39
- element_model_2 = ElementModel(**{
40
- "id": 10, "type": 2, "name": "结果内容", "loc": "get_by_role(\"heading\", name=\"芒果测试平台是集UI,API\")",
41
- "exp": 0,
42
- "sleep": None, "sub": None, "is_iframe": 0, "ope_key": "w_get_text",
43
- "ope_value": [{"f": "locating", "p": None, "d": False, "v": ""},
44
- {"f": "set_cache_key", "p": None, "d": True, "v": "结果内容"}]
39
+ "sql_execute": None,
40
+ "custom": None,
41
+ "condition_value": None,
42
+ "func": None
45
43
  })
46
44
 
47
45
 
48
46
  class TestUi(unittest.IsolatedAsyncioTestCase):
49
47
  async def test_a(self):
50
- driver_object = DriverObject(True)
48
+ driver_object = DriverObject(log, True)
51
49
  driver_object.set_web(0, r"C:\Program Files\Google\Chrome\Application\chrome.exe")
52
50
  base_data = BaseData(test_data, log)
53
51
  base_data.log = log
54
52
  base_data.url = 'https://www.baidu.com/'
55
53
 
56
54
  base_data.context, base_data.page = await driver_object.web.new_web_page()
57
- element = AsyncElement(base_data, element_model_1, 0)
55
+ element = AsyncElement(base_data, 0)
58
56
  await element.open_url()
59
57
  await asyncio.sleep(5)
60
- await element.element_main()
61
- print(element.element_result_model.model_dump())
62
- element = AsyncElement(base_data, element_model_2, 0)
63
- await element.element_main()
64
- print(element.element_result_model.model_dump())
58
+ await element.element_main(element_model, )
59
+ assert element.element_result_model.elements[0].element_text == '设置'
65
60
 
66
61
 
67
62
  class TestUi2(unittest.TestCase):
68
63
 
69
64
  def test_s(self):
70
- driver_object = DriverObject()
65
+ driver_object = DriverObject(log)
71
66
  driver_object.set_web(0, r"C:\Program Files\Google\Chrome\Application\chrome.exe")
72
67
  base_data = BaseData(test_data, log)
73
68
  base_data.url = 'https://www.baidu.com/'
74
69
  base_data.context, base_data.page = driver_object.web.new_web_page()
75
- element = SyncElement(base_data, element_model_1, 0)
70
+ element = SyncElement(base_data, 0)
76
71
  element.open_url()
77
- element.element_main()
72
+ element.element_main(element_model, )
73
+ assert element.element_result_model.elements[0].element_text == '设置'
@@ -1,58 +0,0 @@
1
- mangoautomation/__init__.py,sha256=6nV7fyiPU5G-kWbrpCQUlkJdhJyPQh27qQaSvNvQkzQ,125
2
- mangoautomation/enums/__init__.py,sha256=TZnjNeYQRysRolki82U0_s8BQamQ2EjlWFJ-RDDPel8,387
3
- mangoautomation/enums/_base_enum.py,sha256=dpaXsdhWY08BhIzi1B1ksh_p18ZTmhWvTYhbd3n_ONQ,1176
4
- mangoautomation/enums/_ui_enum.py,sha256=mT_MfQ7TEw-BgHIqH0wXTA_yVWsaWnd3iHSHi9E0pgA,4599
5
- mangoautomation/exceptions/__init__.py,sha256=4CmTPcSFypENe3zXzsBUjA5MxXLugnP14dlakmItVjs,227
6
- mangoautomation/exceptions/_exceptions.py,sha256=BiyST1QPivpfIOuKn1gKhpXOyBv6gfip_KvlQuu8ctw,385
7
- mangoautomation/exceptions/error_msg.py,sha256=0jSdviYbhJS0-xB-IvgRnxteM1ArIcFCIsDdbbVZ-RA,5332
8
- mangoautomation/models/__init__.py,sha256=25zmLzbB4gObJ6nqN7jPYP9LcdlixDKBGVoc7JrwggI,323
9
- mangoautomation/models/_ui_model.py,sha256=6v2nUL41ZJnHX_UEx_C7aAT-QYnDmtKtXyo7V4yvEKg,1787
10
- mangoautomation/tools/__init__.py,sha256=J-uPfaTZMMo7CL2PY6_5qCO24iIBTtUJTuFXDJz_AZg,296
11
- mangoautomation/tools/_mate.py,sha256=9lk_EJnAX_OyXbe5WacyHkkcEr2ScBgasl6eUnlklWA,405
12
- mangoautomation/tools/_uiautodev.py,sha256=RMOQMXse744xwUDb1_l7qDv9mUiqZt1Gm5sbB-nlgDk,1388
13
- mangoautomation/uidrive/__init__.py,sha256=3xD94fw5QQvBPMPDq2o-SiJI_zt0AdJuB_X0eAFth8g,430
14
- mangoautomation/uidrive/_async_element.py,sha256=rx5CBqXDgZoY7l_oNdbPE8GnBzF_EOE0_jeDkb8RQJ0,15092
15
- mangoautomation/uidrive/_base_data.py,sha256=xDjgBJ6CDFajUy18ft-NKe-7vKe7WtgMC9zV6gRrmPY,3946
16
- mangoautomation/uidrive/_driver_object.py,sha256=7RGiAIPHU_bQtwVPEprnXt-HOzoKuKn_Bu2RZxjSAVs,2055
17
- mangoautomation/uidrive/_sync_element.py,sha256=9YVegi_mCqgb_JwoagsDqhQTmnAem4zrNzVphrqM24s,14861
18
- mangoautomation/uidrive/android/__init__.py,sha256=HBYY1L-g7OASchquaUXH7NcpxXpuJVx6Zuw0JbNgq-Y,5524
19
- mangoautomation/uidrive/android/_application.py,sha256=ic9RbiOAft3wWi6QH6PgcRVN8kiahe3wMyErxsHp3FU,2854
20
- mangoautomation/uidrive/android/_assertion.py,sha256=ps6uBP4KxcBGJkrlG7m-Caq1rz4UfJhKUNU2YBetu-c,4349
21
- mangoautomation/uidrive/android/_customization.py,sha256=pCLMmruozOyCJQZWAYupxxKqpWmZyCYsfSBw3XW7vf0,381
22
- mangoautomation/uidrive/android/_element.py,sha256=3IEUCh9nzgB0hFG0nMcoPC28wMAoDxMS2Tf3gcmm80g,7212
23
- mangoautomation/uidrive/android/_equipment.py,sha256=TeVFB5QzKTNIAfcV7DMYkQZVzgIGx4_hWQ3Z1RsIKXc,5215
24
- mangoautomation/uidrive/android/_new_android.py,sha256=WldFsGm5QnJ9QVPtWxRgwCiWSX3jYObFxAPCQ5xSKyg,1636
25
- mangoautomation/uidrive/android/_page.py,sha256=Ep9btx-2dgaEmjHAVExjB35HQx29PGZ0DHNndIYNpJc,4620
26
- mangoautomation/uidrive/ios/__init__.py,sha256=SdxI8e5AOoAb8JTaDoMkObezIluJ50nm2b6zeDHv1PI,125
27
- mangoautomation/uidrive/pc/__init__.py,sha256=gp3T9C5bSA78dv1AgWXeB9yQQi6q5Tkd0NedCencGWo,2275
28
- mangoautomation/uidrive/pc/assertion.py,sha256=mH25hZ2i4T8kA1F2loW_nuPJ-Hb0z1pwILTJqkwwpLA,125
29
- mangoautomation/uidrive/pc/customization.py,sha256=hHf66ImrVxFlGtONrWSHUDrYjmWFc4ANJ883TIrJFG8,239
30
- mangoautomation/uidrive/pc/element.py,sha256=LdlWHhvXsaHH6jTp6nNrF81OWPtx81dct4yDBHikQBg,519
31
- mangoautomation/uidrive/pc/input_device.py,sha256=F6ZqKja3XkJww66x3l9Idha3R19D832J-5TfiKWmUso,353
32
- mangoautomation/uidrive/pc/new_windows.py,sha256=lETHZa7cW8Z0iUShzgVTRxqivkYaOo8WIE58q_8KYfQ,2338
33
- mangoautomation/uidrive/web/__init__.py,sha256=MgTklzty_SvX4UemCnqJuViq3cIjUgAjFoEtP-mcDWw,123
34
- mangoautomation/uidrive/web/async_web/__init__.py,sha256=1HoxtHLxVOSwrsquoUTwU29DJcYCcQg89p_DOyZ9tJU,8372
35
- mangoautomation/uidrive/web/async_web/_assertion.py,sha256=2tPSGiJSKmrkiM0bvOd6nfTKTAjDAlosgXcn-oiN0zM,12820
36
- mangoautomation/uidrive/web/async_web/_browser.py,sha256=mx1m4bPZSdvNOD_8V3gcFUjGMfU3oXj6IJJdlT4ukD0,5381
37
- mangoautomation/uidrive/web/async_web/_customization.py,sha256=uw6p9uLHLXglgSkH4qjDl1v0iGlaNjvf8LljRH5cAHU,347
38
- mangoautomation/uidrive/web/async_web/_element.py,sha256=qEwvGZGzDBNhvYiKB3rlgtTS9D07ln-5iPOUIwKzIdI,11064
39
- mangoautomation/uidrive/web/async_web/_input_device.py,sha256=0EjGkCQWjKY69bTIILNoX7p_6VVfYAVgjNaj4t2r6nk,3440
40
- mangoautomation/uidrive/web/async_web/_new_browser.py,sha256=v-OXD-uYD7XagupxSlG4g_ZBsRq_Jpo88iwE_A_Ilfs,6202
41
- mangoautomation/uidrive/web/async_web/_page.py,sha256=DIdyu-TmAUmgkwXDeNzB0p9bqc0Csomj_7ahWcO8ZH0,2175
42
- mangoautomation/uidrive/web/sync_web/__init__.py,sha256=wV1_y-lsX5qW30ERIvP-X0eRdnwVV3L7uTRCMiowqfo,7938
43
- mangoautomation/uidrive/web/sync_web/_assertion.py,sha256=2GOhwD7CKtUbsdWmo0aT9pxfBFUQ_bYrjdvRoIBwDNs,12594
44
- mangoautomation/uidrive/web/sync_web/_browser.py,sha256=b-nBdskqKTFX4Y7xRs8NqEXYulJj9CP2hgLJ9qWnWlQ,5245
45
- mangoautomation/uidrive/web/sync_web/_customization.py,sha256=E_pfI8gKd0O6r4huJIvA6hoW-X9fSDVL4zEUqhHgxwE,355
46
- mangoautomation/uidrive/web/sync_web/_element.py,sha256=QIwgQ0cdMc9-oa5TwRTKxxwndUgvVCTogTohSNKhzRs,10683
47
- mangoautomation/uidrive/web/sync_web/_input_device.py,sha256=zPFd8xFuLeem9Io0ZBkiaJlFoPSHea-A87_vnYHEg80,3287
48
- mangoautomation/uidrive/web/sync_web/_new_browser.py,sha256=APGUFhOVAW68x-6y9tQLZJkn2utfR-PrpjgP8WE38SE,6149
49
- mangoautomation/uidrive/web/sync_web/_page.py,sha256=LC7FWr6Exv-KSiSU0y2Zxjd39_QLohe_UD5nvA8htUM,2045
50
- tests/__init__.py,sha256=fdlqghHH7eXneovXweQjn6gVb8jwm6wprtPw5ksV_IA,350
51
- tests/get_ope.py,sha256=SVhSowMNa87hjzGhFlS0vp-t0RB9yKHOC52FsO93UG4,236
52
- tests/test_ui_and.py,sha256=A_0pqG6s5Ts02He7P3NwuDSK3g9Q3VP1Sb_P8wq6g0Q,125
53
- tests/test_ui_web.py,sha256=MFaUN8O5qKOMMgyk2eelhKZsYcSJm0Do6pCgsdBZEH4,2765
54
- mangoautomation-1.1.21.dist-info/LICENSE,sha256=03WP-mgFmo8ofRYDe1HVDQUEUKQZ2q6P6Q-2A4c-46A,1085
55
- mangoautomation-1.1.21.dist-info/METADATA,sha256=4HkJR-sB5b2mJfzCJ2Qzv6y3KiJSOlVKFPKUtPKhPqE,816
56
- mangoautomation-1.1.21.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
57
- mangoautomation-1.1.21.dist-info/top_level.txt,sha256=g-uCmjvEODG8WFbmwbGM0-G0zHntHv8ZsS0PQRaMGtE,22
58
- mangoautomation-1.1.21.dist-info/RECORD,,
File without changes
File without changes
File without changes
File without changes
File without changes