mangoautomation 1.1.21__py3-none-any.whl → 1.1.23__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.
- mangoautomation/__init__.py +1 -1
- mangoautomation/enums/__init__.py +0 -2
- mangoautomation/exceptions/__init__.py +0 -3
- mangoautomation/exceptions/error_msg.py +4 -4
- mangoautomation/mangos/__init__.py +14 -0
- mangoautomation/mangos/__pycache__/__init__.cpython-310.pyc +0 -0
- mangoautomation/mangos/mangos.cp310-win_amd64.pyd +0 -0
- mangoautomation/mangos/mangos.cp312-win_amd64.pyd +0 -0
- mangoautomation/mangos/mangos.cpython-310-darwin.so +0 -0
- mangoautomation/mangos/mangos.cpython-310-x86_64-linux-gnu.so +0 -0
- mangoautomation/mangos/mangos.cpython-312-darwin.so +0 -0
- mangoautomation/mangos/mangos.cpython-312-x86_64-linux-gnu.so +0 -0
- mangoautomation/models/__init__.py +0 -2
- mangoautomation/models/_ui_model.py +2 -1
- mangoautomation/tools/__init__.py +0 -2
- mangoautomation/tools/_uiautodev.py +1 -3
- mangoautomation/uidrive/__init__.py +5 -7
- mangoautomation/uidrives/__init__.py +21 -0
- mangoautomation/{uidrive → uidrives}/_async_element.py +80 -52
- mangoautomation/{uidrive → uidrives}/_base_data.py +16 -4
- mangoautomation/{uidrive → uidrives}/_driver_object.py +2 -4
- mangoautomation/{uidrive → uidrives}/_sync_element.py +78 -50
- mangoautomation/{uidrive → uidrives}/android/__init__.py +2 -16
- mangoautomation/{uidrive → uidrives}/android/_application.py +1 -1
- mangoautomation/{uidrive → uidrives}/android/_assertion.py +1 -1
- mangoautomation/{uidrive → uidrives}/android/_customization.py +1 -1
- mangoautomation/{uidrive → uidrives}/android/_element.py +3 -3
- mangoautomation/{uidrive → uidrives}/android/_equipment.py +1 -1
- mangoautomation/{uidrive → uidrives}/android/_page.py +1 -1
- mangoautomation/{uidrive → uidrives}/pc/__init__.py +3 -4
- mangoautomation/{uidrive → uidrives}/pc/customization.py +1 -1
- mangoautomation/{uidrive → uidrives}/pc/element.py +1 -2
- mangoautomation/{uidrive → uidrives}/pc/input_device.py +1 -2
- mangoautomation/uidrives/web/__init__.py +10 -0
- mangoautomation/uidrives/web/_async_web.py +166 -0
- mangoautomation/uidrives/web/_sync_web.py +166 -0
- mangoautomation/{uidrive → uidrives}/web/async_web/__init__.py +8 -8
- mangoautomation/{uidrive → uidrives}/web/async_web/_assertion.py +1 -1
- mangoautomation/{uidrive → uidrives}/web/async_web/_browser.py +2 -2
- mangoautomation/{uidrive → uidrives}/web/async_web/_customization.py +1 -1
- mangoautomation/{uidrive → uidrives}/web/async_web/_element.py +3 -13
- mangoautomation/{uidrive → uidrives}/web/async_web/_input_device.py +1 -1
- mangoautomation/{uidrive → uidrives}/web/async_web/_page.py +1 -1
- mangoautomation/{uidrive → uidrives}/web/sync_web/__init__.py +8 -8
- mangoautomation/{uidrive → uidrives}/web/sync_web/_assertion.py +1 -1
- mangoautomation/{uidrive → uidrives}/web/sync_web/_browser.py +3 -3
- mangoautomation/{uidrive → uidrives}/web/sync_web/_customization.py +1 -1
- mangoautomation/{uidrive → uidrives}/web/sync_web/_element.py +3 -13
- mangoautomation/{uidrive → uidrives}/web/sync_web/_input_device.py +1 -1
- mangoautomation/{uidrive → uidrives}/web/sync_web/_page.py +2 -2
- {mangoautomation-1.1.21.dist-info → mangoautomation-1.1.23.dist-info}/METADATA +4 -4
- mangoautomation-1.1.23.dist-info/RECORD +71 -0
- tests/__init__.py +0 -10
- tests/demo1.py +21 -0
- tests/test_ai_element.py +36 -0
- tests/test_ui_web.py +31 -31
- mangoautomation/uidrive/web/__init__.py +0 -5
- mangoautomation-1.1.21.dist-info/RECORD +0 -58
- /mangoautomation/{uidrive → uidrives}/android/_new_android.py +0 -0
- /mangoautomation/{uidrive → uidrives}/ios/__init__.py +0 -0
- /mangoautomation/{uidrive → uidrives}/pc/assertion.py +0 -0
- /mangoautomation/{uidrive → uidrives}/pc/new_windows.py +0 -0
- /mangoautomation/{uidrive → uidrives}/web/async_web/_new_browser.py +0 -0
- /mangoautomation/{uidrive → uidrives}/web/sync_web/_new_browser.py +0 -0
- {mangoautomation-1.1.21.dist-info → mangoautomation-1.1.23.dist-info}/LICENSE +0 -0
- {mangoautomation-1.1.21.dist-info → mangoautomation-1.1.23.dist-info}/WHEEL +0 -0
- {mangoautomation-1.1.21.dist-info → mangoautomation-1.1.23.dist-info}/top_level.txt +0 -0
|
@@ -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 ....
|
|
18
|
-
from ....
|
|
19
|
-
from ....
|
|
20
|
-
from ....
|
|
21
|
-
from ....
|
|
22
|
-
from ....
|
|
23
|
-
from ....
|
|
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.
|
|
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 ....
|
|
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 ....
|
|
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='
|
|
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()}')
|
|
@@ -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 ....
|
|
15
|
+
from ....uidrives._base_data import BaseData
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class SyncWebElement(metaclass=Meta):
|
|
@@ -24,15 +24,11 @@ class SyncWebElement(metaclass=Meta):
|
|
|
24
24
|
@sync_method_callback('web', '元素操作', 0, [MethodModel(f='locating')])
|
|
25
25
|
def w_click(self, locating: Locator):
|
|
26
26
|
"""元素单击"""
|
|
27
|
-
if locating.count() < 1:
|
|
28
|
-
raise TimeoutError('元素个数小于1,直接操作超时!')
|
|
29
27
|
locating.click()
|
|
30
28
|
|
|
31
29
|
@sync_method_callback('web', '元素操作', 1, [MethodModel(f='locating')])
|
|
32
30
|
def w_dblclick(self, locating: Locator):
|
|
33
31
|
"""元素双击"""
|
|
34
|
-
if locating.count() < 1:
|
|
35
|
-
raise TimeoutError('元素个数小于1,直接操作超时!')
|
|
36
32
|
locating.dblclick()
|
|
37
33
|
|
|
38
34
|
@sync_method_callback('web', '元素操作', 2, [MethodModel(f='locating')])
|
|
@@ -45,8 +41,6 @@ class SyncWebElement(metaclass=Meta):
|
|
|
45
41
|
MethodModel(n='输入文本', f='input_value', p='请输入输入内容', d=True)])
|
|
46
42
|
def w_input(self, locating: Locator, input_value: str):
|
|
47
43
|
"""元素输入"""
|
|
48
|
-
if locating.count() < 1:
|
|
49
|
-
raise TimeoutError('元素个数小于1,直接操作超时!')
|
|
50
44
|
locating.fill(str(input_value))
|
|
51
45
|
|
|
52
46
|
@sync_method_callback('web', '元素操作', 4, [MethodModel(f='locating')])
|
|
@@ -60,8 +54,6 @@ class SyncWebElement(metaclass=Meta):
|
|
|
60
54
|
MethodModel(n='缓存的key', f='set_cache_key', p='请输入获取元素文本后存储的key', d=True)])
|
|
61
55
|
def w_get_text(self, locating: Locator, set_cache_key=None):
|
|
62
56
|
"""获取元素文本"""
|
|
63
|
-
if locating.count() < 1:
|
|
64
|
-
raise TimeoutError('元素个数小于1,直接操作超时!')
|
|
65
57
|
methods = [
|
|
66
58
|
("inner_text", lambda: locating.inner_text()),
|
|
67
59
|
("text_content", lambda: locating.text_content()),
|
|
@@ -86,8 +78,6 @@ class SyncWebElement(metaclass=Meta):
|
|
|
86
78
|
MethodModel(n='输入文本', f='input_value', p='请输入输入内容', d=True)])
|
|
87
79
|
def w_clear_input(self, locating: Locator, input_value: str):
|
|
88
80
|
"""元素清空再输入"""
|
|
89
|
-
if locating.count() < 1:
|
|
90
|
-
raise TimeoutError('元素个数小于1,直接操作超时!')
|
|
91
81
|
locating.clear()
|
|
92
82
|
locating.fill(str(input_value))
|
|
93
83
|
|
|
@@ -237,10 +227,10 @@ class SyncWebElement(metaclass=Meta):
|
|
|
237
227
|
|
|
238
228
|
@sync_method_callback('web', '元素操作', 15, [
|
|
239
229
|
MethodModel(f='locating'),
|
|
240
|
-
MethodModel(n='截图路径', f='path', p='
|
|
230
|
+
MethodModel(n='截图路径', f='path', p='请输入截图名称', d=True)])
|
|
241
231
|
def w_ele_screenshot(self, locating: Locator, path: str):
|
|
242
232
|
"""元素截图"""
|
|
243
|
-
locating.screenshot(path=path)
|
|
233
|
+
locating.screenshot(path=os.path.join(self.base_data.download_path, path))
|
|
244
234
|
|
|
245
235
|
@sync_method_callback('web', '元素操作', 20, [
|
|
246
236
|
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 ....
|
|
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,16 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mangoautomation
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.23
|
|
4
4
|
Summary: 测试工具
|
|
5
5
|
Home-page: https://gitee.com/mao-peng/testkit
|
|
6
6
|
Author: 毛鹏
|
|
7
7
|
Author-email: 729164035@qq.com
|
|
8
8
|
Classifier: Programming Language :: Python :: 3.10
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
10
9
|
Classifier: Programming Language :: Python :: 3.12
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
12
10
|
License-File: LICENSE
|
|
13
|
-
Requires-Dist: setuptools
|
|
11
|
+
Requires-Dist: setuptools ==78.1.1
|
|
14
12
|
Requires-Dist: pydantic >=2.9.2
|
|
15
13
|
Requires-Dist: playwright ==1.43.0
|
|
16
14
|
Requires-Dist: uiautomation >=2.0.20
|
|
@@ -18,6 +16,8 @@ Requires-Dist: uiautomator2 >=3.2.5
|
|
|
18
16
|
Requires-Dist: mangotools >=1.1.42
|
|
19
17
|
Requires-Dist: adbutils ~=2.8.9
|
|
20
18
|
Requires-Dist: uiautodev >=0.9.0
|
|
19
|
+
Requires-Dist: beautifulsoup4 ==4.14.2
|
|
20
|
+
Requires-Dist: openai ==2.6.1
|
|
21
21
|
|
|
22
22
|
# testkit
|
|
23
23
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
mangoautomation/__init__.py,sha256=JxPNVexFQvkBfh0awPNeHxQGU_gtVgYPwD5rYeuHWEk,125
|
|
2
|
+
mangoautomation/enums/__init__.py,sha256=PnOgNttAXT64elr_Fd1ZthuAddCkm7sh4xwm9Eutm_I,373
|
|
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=2j3ravPuzljR2Mbq8J2JLdXUzII7hzrjdVjmEc_NHJU,211
|
|
6
|
+
mangoautomation/exceptions/_exceptions.py,sha256=BiyST1QPivpfIOuKn1gKhpXOyBv6gfip_KvlQuu8ctw,385
|
|
7
|
+
mangoautomation/exceptions/error_msg.py,sha256=0unQ_tgrRJtVMAOXTzhQJkwO4_7lhMKAMMCfwmzQD58,5517
|
|
8
|
+
mangoautomation/mangos/__init__.py,sha256=gEu8lVHGXm8PDTBZ1XXWNUOAbCtHb37uKQLBRYQR4rs,644
|
|
9
|
+
mangoautomation/mangos/mangos.cp310-win_amd64.pyd,sha256=XkKi2OyGgDxX7lJQnNuJMGiL4b-vntDLwo4wAmOUdrg,1751552
|
|
10
|
+
mangoautomation/mangos/mangos.cp312-win_amd64.pyd,sha256=5ajaOne3Kb1yNEb3Eci1bvjzKIuiJaTPfwBY3f_MK0o,1879040
|
|
11
|
+
mangoautomation/mangos/mangos.cpython-310-darwin.so,sha256=HwZCN0lpGKdAzvygPA4O4Q_xyAd7aDcrZFUzWSqZcWI,3555568
|
|
12
|
+
mangoautomation/mangos/mangos.cpython-310-x86_64-linux-gnu.so,sha256=EaTWB-R4yHJYfkwF0P_YMjlBKY35KTTKrDsAaKCqAZo,10465816
|
|
13
|
+
mangoautomation/mangos/mangos.cpython-312-darwin.so,sha256=iG43WcChIPozrKK98MqBTqDlZFNxKjQSyB0CKu0mIaE,3456880
|
|
14
|
+
mangoautomation/mangos/mangos.cpython-312-x86_64-linux-gnu.so,sha256=P1Hax5huyMm-7eeuWby9mWmTI2HW3JEA8mSvIl65aAk,10670984
|
|
15
|
+
mangoautomation/mangos/__pycache__/__init__.cpython-310.pyc,sha256=kQcwQCOca8l62vfKIC6YKi0lEIUV3Vjnel0ox2bDbOc,608
|
|
16
|
+
mangoautomation/models/__init__.py,sha256=wHACwBCrd9HCvmrAkTFUV3qmK9GnOa-FJFiL0kOQjME,309
|
|
17
|
+
mangoautomation/models/_ui_model.py,sha256=nfxh_4TpOLzKKWC7c-IgMLVZY5wkTPfyS_Oh-SvsYsk,1825
|
|
18
|
+
mangoautomation/tools/__init__.py,sha256=c3IXhoodknOukOyM6db2tXIdDRodgmUZorEAkkruQf0,282
|
|
19
|
+
mangoautomation/tools/_mate.py,sha256=9lk_EJnAX_OyXbe5WacyHkkcEr2ScBgasl6eUnlklWA,405
|
|
20
|
+
mangoautomation/tools/_uiautodev.py,sha256=KYYWOQ_sp91LN_zeKAuIvCqjabb2_1-VhgOg1K7cQrw,1372
|
|
21
|
+
mangoautomation/uidrive/__init__.py,sha256=9N2DTDyLcmgxAHctBjZOb8LwdDeKQnwEOWZ9kNcM4Uw,350
|
|
22
|
+
mangoautomation/uidrives/__init__.py,sha256=JEoWqpoDIch8JiQ7WcnuDh3Bjg0Yqo_xfkbqY5iHSa8,617
|
|
23
|
+
mangoautomation/uidrives/_async_element.py,sha256=87BhadK9BJtcv_VzJUM3kX5sdp8b8Kk-abkU9oE3T7M,16206
|
|
24
|
+
mangoautomation/uidrives/_base_data.py,sha256=gp9730Hd8uarRv8xARIddgMWGhaJ_RKDd_gjewwWr04,4436
|
|
25
|
+
mangoautomation/uidrives/_driver_object.py,sha256=VnnmXO-BODhqEDmqwb2U0G5FwLRdrBKvkrLE2mwC6gs,1951
|
|
26
|
+
mangoautomation/uidrives/_sync_element.py,sha256=TU2E7AKz0Ku4qXLEtxx-whJPJ4KLYLK_EuKgChpcedM,15906
|
|
27
|
+
mangoautomation/uidrives/android/__init__.py,sha256=i6WjXlNq6oUZ4y79Gih_XzI9tV7du-Jrm9IAuROgSzo,5180
|
|
28
|
+
mangoautomation/uidrives/android/_application.py,sha256=G94m53cUzzGuXxPIsvoMuFwJ5RWL_xW5HHFE0TIkrBI,2855
|
|
29
|
+
mangoautomation/uidrives/android/_assertion.py,sha256=FH8sxJC4ZXCbVA9KFBp49Tu8LPWyO26EZYAK7cYaoYE,4350
|
|
30
|
+
mangoautomation/uidrives/android/_customization.py,sha256=7C8j2rv2wDkNu425ooxLSDrGHr_CxJ82sXz1-64id_8,382
|
|
31
|
+
mangoautomation/uidrives/android/_element.py,sha256=ggWEFUbrAGWPQXNvD9JpudwowwvYJrgHdrNXyytAEVw,7213
|
|
32
|
+
mangoautomation/uidrives/android/_equipment.py,sha256=Ul61jpoVr162FIu_2QcJtqWil82ZBC-Kn7_VFQWCUsQ,5216
|
|
33
|
+
mangoautomation/uidrives/android/_new_android.py,sha256=WldFsGm5QnJ9QVPtWxRgwCiWSX3jYObFxAPCQ5xSKyg,1636
|
|
34
|
+
mangoautomation/uidrives/android/_page.py,sha256=IaWiN3kniv2GKfudMLRdvyaqbFLuIfGh7H0HeQrDyVA,4621
|
|
35
|
+
mangoautomation/uidrives/ios/__init__.py,sha256=SdxI8e5AOoAb8JTaDoMkObezIluJ50nm2b6zeDHv1PI,125
|
|
36
|
+
mangoautomation/uidrives/pc/__init__.py,sha256=Jphhspu-3AHCyDX5ZM_-DWeC9ZerWy2Omb3MOck6CI4,2210
|
|
37
|
+
mangoautomation/uidrives/pc/assertion.py,sha256=mH25hZ2i4T8kA1F2loW_nuPJ-Hb0z1pwILTJqkwwpLA,125
|
|
38
|
+
mangoautomation/uidrives/pc/customization.py,sha256=UkpHWFSYsu_t-GmMRDmii1Bs_Y1eKD34oZfJBFHV2Ng,240
|
|
39
|
+
mangoautomation/uidrives/pc/element.py,sha256=OGbJHbgJPBjRjXqM-NIWUnScn7lIHoBxnrakog_s4l8,465
|
|
40
|
+
mangoautomation/uidrives/pc/input_device.py,sha256=k-v7tRW8NkJxzcezqSIfICGRBqEdsssBeRTmtupVTU8,299
|
|
41
|
+
mangoautomation/uidrives/pc/new_windows.py,sha256=lETHZa7cW8Z0iUShzgVTRxqivkYaOo8WIE58q_8KYfQ,2338
|
|
42
|
+
mangoautomation/uidrives/web/__init__.py,sha256=TJyYt6EUoRfWYrV193RHpopKfixipVUp4TrhB5DoEKA,434
|
|
43
|
+
mangoautomation/uidrives/web/_async_web.py,sha256=Uwta7cIYo-0Qe5RbaIvRSQ-IvOxCNtbH_RcIm1JNxEQ,8204
|
|
44
|
+
mangoautomation/uidrives/web/_sync_web.py,sha256=NCF97mYWQBLsOkcEXHKbAGLYGt4rK7NSjks6PubLe_k,8049
|
|
45
|
+
mangoautomation/uidrives/web/async_web/__init__.py,sha256=_jG4DvEbNe4EZTFEBKQhgwRxxIzrdK7APmIicFb0zMk,8379
|
|
46
|
+
mangoautomation/uidrives/web/async_web/_assertion.py,sha256=cG8g_iFMlWcAMDyIfPTJ5lx73BpbGZV5PoAbe1uAy4Q,12821
|
|
47
|
+
mangoautomation/uidrives/web/async_web/_browser.py,sha256=xAaawPbY-rj-HZtcy5LcWUQ_jmdN9Dj4yNUxWxXGCbQ,5421
|
|
48
|
+
mangoautomation/uidrives/web/async_web/_customization.py,sha256=LakibDXpSc-MMxMiwDiktoFccgyiUmWxAVpMOobY9_A,347
|
|
49
|
+
mangoautomation/uidrives/web/async_web/_element.py,sha256=fVJWBUI0C2eFYP8XhLkW2Cez2gdYP1j0PcIBVDzUEk4,10507
|
|
50
|
+
mangoautomation/uidrives/web/async_web/_input_device.py,sha256=wd36vTwsWdq7f52HmEnAF2sNiFVwNxJ2J5bq-lcuuVk,3441
|
|
51
|
+
mangoautomation/uidrives/web/async_web/_new_browser.py,sha256=v-OXD-uYD7XagupxSlG4g_ZBsRq_Jpo88iwE_A_Ilfs,6202
|
|
52
|
+
mangoautomation/uidrives/web/async_web/_page.py,sha256=B1RbnPWaQWa3Sp57ue2sTgcgEr4kTgSEz0DcpA5lOug,2176
|
|
53
|
+
mangoautomation/uidrives/web/sync_web/__init__.py,sha256=gThDpZPtCFdKrxnVYgAsj_6oha9lMed7xoU4XTsLOys,7945
|
|
54
|
+
mangoautomation/uidrives/web/sync_web/_assertion.py,sha256=GEUGvYd3LgisMTgiinFF-Z6nWqxA4EUbvHenw7rPaW0,12595
|
|
55
|
+
mangoautomation/uidrives/web/sync_web/_browser.py,sha256=_Z6NhhP_6N-cxak3X8yUnPzUet7b1tBpI85iAbzwoyQ,5286
|
|
56
|
+
mangoautomation/uidrives/web/sync_web/_customization.py,sha256=Wir5CIGN6YiyVj1-D_zvSWcFuUvQMP8rJ-8boUaU1Bs,356
|
|
57
|
+
mangoautomation/uidrives/web/sync_web/_element.py,sha256=T8Za5wTzSlPleJMz0XkRCbnqSk8OpLHMs3_TalF7xrE,10157
|
|
58
|
+
mangoautomation/uidrives/web/sync_web/_input_device.py,sha256=SwsFi4PiS3sg45MPl_NV88nDrg4SmJ14fV8sODByQ58,3288
|
|
59
|
+
mangoautomation/uidrives/web/sync_web/_new_browser.py,sha256=APGUFhOVAW68x-6y9tQLZJkn2utfR-PrpjgP8WE38SE,6149
|
|
60
|
+
mangoautomation/uidrives/web/sync_web/_page.py,sha256=GbVsK7ZBcoMBnKw2VMPWy3Yt9Jqa84qxrB2Ar2d8aR8,2046
|
|
61
|
+
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
|
+
tests/demo1.py,sha256=5iK5kqaMkebTk-Z4HoMnfi88CRUIBKwT8PVQXFaqgD4,736
|
|
63
|
+
tests/get_ope.py,sha256=SVhSowMNa87hjzGhFlS0vp-t0RB9yKHOC52FsO93UG4,236
|
|
64
|
+
tests/test_ai_element.py,sha256=k__iifxebvPPfGdRS-yzkEH80fBIlKJcZ-m3N6Xkz6Q,1437
|
|
65
|
+
tests/test_ui_and.py,sha256=A_0pqG6s5Ts02He7P3NwuDSK3g9Q3VP1Sb_P8wq6g0Q,125
|
|
66
|
+
tests/test_ui_web.py,sha256=RBACNYc7XdvENHzg4YElsSQlEmPVa_AyOKWTYTPXM14,2578
|
|
67
|
+
mangoautomation-1.1.23.dist-info/LICENSE,sha256=03WP-mgFmo8ofRYDe1HVDQUEUKQZ2q6P6Q-2A4c-46A,1085
|
|
68
|
+
mangoautomation-1.1.23.dist-info/METADATA,sha256=wbPR7Rb4WurD4bh8nDEoKhLSumkIIMM2008pk-Skvso,783
|
|
69
|
+
mangoautomation-1.1.23.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
|
70
|
+
mangoautomation-1.1.23.dist-info/top_level.txt,sha256=g-uCmjvEODG8WFbmwbGM0-G0zHntHv8ZsS0PQRaMGtE,22
|
|
71
|
+
mangoautomation-1.1.23.dist-info/RECORD,,
|
tests/__init__.py
CHANGED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
# @Project: 芒果测试平台
|
|
3
|
-
# @Description:
|
|
4
|
-
# @Time : 2024-09-07 23:25
|
|
5
|
-
# @Author : 毛鹏
|
|
6
|
-
import random
|
|
7
|
-
|
|
8
|
-
data_list = [{'exp': 2, 'loc': 'get_by_role("textbox", name="请输入1密码")'},
|
|
9
|
-
{'exp': 0, 'loc': '//input[@type="password"]'}]
|
|
10
|
-
print(random.randint(0, len(data_list) - 1), len(data_list))
|
tests/demo1.py
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from openai import OpenAI
|
|
2
|
+
|
|
3
|
+
client = OpenAI(api_key="sk-rruuhjnqawsvduyxlcqckbtgwkprctgkvwcelenooixbhthy",
|
|
4
|
+
base_url="https://api.siliconflow.cn/v1")
|
|
5
|
+
response = client.chat.completions.create(
|
|
6
|
+
# model='Pro/deepseek-ai/DeepSeek-R1',
|
|
7
|
+
model="THUDM/GLM-Z1-9B-0414",
|
|
8
|
+
messages=[
|
|
9
|
+
{'role': 'user',
|
|
10
|
+
'content': "推理模型会给市场带来哪些新的机会"}
|
|
11
|
+
],
|
|
12
|
+
stream=True
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
for chunk in response:
|
|
16
|
+
if not chunk.choices:
|
|
17
|
+
continue
|
|
18
|
+
if chunk.choices[0].delta.content:
|
|
19
|
+
print(chunk.choices[0].delta.content, end="", flush=True)
|
|
20
|
+
if chunk.choices[0].delta.reasoning_content:
|
|
21
|
+
print(chunk.choices[0].delta.reasoning_content, end="", flush=True)
|
tests/test_ai_element.py
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# @Project: 芒果测试平台
|
|
3
|
+
# @Description:
|
|
4
|
+
# @Time : 2025-10-28 10:32
|
|
5
|
+
# @Author : 毛鹏
|
|
6
|
+
import unittest
|
|
7
|
+
|
|
8
|
+
import time
|
|
9
|
+
|
|
10
|
+
from .demo1 import WebAIFinder
|
|
11
|
+
from mangoautomation.uidrive import BaseData, DriverObject, SyncElement
|
|
12
|
+
from mangoautomation.uidrives import AsyncElement
|
|
13
|
+
from mangotools.data_processor import DataProcessor
|
|
14
|
+
from mangotools.log_collector import set_log
|
|
15
|
+
# api_key = 'sk-'
|
|
16
|
+
# b = 'https://api.siliconflow.cn/v1'
|
|
17
|
+
# model = 'THUDM/GLM-Z1-9B-0414'
|
|
18
|
+
log = set_log('D:\code\mango_automation\logs')
|
|
19
|
+
log.set_debug(True)
|
|
20
|
+
test_data = DataProcessor()
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class TestUi(unittest.IsolatedAsyncioTestCase):
|
|
24
|
+
async def test_a(self):
|
|
25
|
+
driver_object = DriverObject(log, is_async=True)
|
|
26
|
+
driver_object.set_web(0, r"C:\Program Files\Google\Chrome\Application\chrome.exe")
|
|
27
|
+
base_data = BaseData(test_data, log)
|
|
28
|
+
base_data.url = 'https://www.baidu.com/'
|
|
29
|
+
base_data.context, base_data.page = await driver_object.web.new_web_page()
|
|
30
|
+
element = AsyncElement(base_data, 0)
|
|
31
|
+
await element.open_url()
|
|
32
|
+
loc = await WebAIFinder(log, api_key, b, model).ai_find_element_async(base_data.page, '设置', '设置在右上角', ['//*[text()="设置"]'])
|
|
33
|
+
await element.w_hover(loc)
|
|
34
|
+
print('获取元素名称:', await element.w_get_text(loc))
|
|
35
|
+
time.sleep(5)
|
|
36
|
+
assert await element.w_get_text(loc) == '设置'
|
tests/test_ui_web.py
CHANGED
|
@@ -11,67 +11,67 @@ 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:\
|
|
14
|
+
log = set_log('D:\code\mango_automation\logs')
|
|
15
|
+
log.set_debug(True)
|
|
15
16
|
test_data = DataProcessor()
|
|
16
|
-
|
|
17
|
-
"id":
|
|
17
|
+
element_model = ElementModel(**{
|
|
18
|
+
"id": 3,
|
|
18
19
|
"type": 0,
|
|
19
|
-
"name": "
|
|
20
|
-
"
|
|
21
|
-
|
|
20
|
+
"name": "设置",
|
|
21
|
+
"elements": [
|
|
22
|
+
{
|
|
23
|
+
"exp": 0,
|
|
24
|
+
"loc": "//span[@name=\"tj_settingicons\"]",
|
|
25
|
+
"sub": None,
|
|
26
|
+
"is_iframe": 0,
|
|
27
|
+
"prompt": "设置"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
22
30
|
"sleep": None,
|
|
23
|
-
"
|
|
24
|
-
"is_iframe": 0,
|
|
25
|
-
"ope_key": "w_open_new_tab_and_switch",
|
|
31
|
+
"ope_key": "w_hover",
|
|
26
32
|
"ope_value": [
|
|
27
33
|
{
|
|
28
34
|
"f": "locating",
|
|
35
|
+
"n": None,
|
|
29
36
|
"p": None,
|
|
30
37
|
"d": False,
|
|
31
38
|
"v": ""
|
|
32
39
|
}
|
|
33
40
|
],
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
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": "结果内容"}]
|
|
41
|
+
"sql_execute": None,
|
|
42
|
+
"custom": None,
|
|
43
|
+
"condition_value": None,
|
|
44
|
+
"func": None
|
|
45
45
|
})
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
class TestUi(unittest.IsolatedAsyncioTestCase):
|
|
49
49
|
async def test_a(self):
|
|
50
|
-
driver_object = DriverObject(True)
|
|
50
|
+
driver_object = DriverObject(log, True)
|
|
51
51
|
driver_object.set_web(0, r"C:\Program Files\Google\Chrome\Application\chrome.exe")
|
|
52
|
-
base_data = BaseData(test_data, log)
|
|
52
|
+
base_data = BaseData(test_data, log).set_agent(True, 'sk-rruuhjnqawsvduyxlcqckbtgwkprctgkvwcelenooixbhthy')
|
|
53
|
+
base_data.screenshot_path = r'D:\code\mango_automation\logs'
|
|
53
54
|
base_data.log = log
|
|
54
55
|
base_data.url = 'https://www.baidu.com/'
|
|
55
56
|
|
|
56
57
|
base_data.context, base_data.page = await driver_object.web.new_web_page()
|
|
57
|
-
element = AsyncElement(base_data,
|
|
58
|
+
element = AsyncElement(base_data, 0)
|
|
58
59
|
await element.open_url()
|
|
59
60
|
await asyncio.sleep(5)
|
|
60
|
-
await element.element_main()
|
|
61
|
-
print(element.element_result_model.
|
|
62
|
-
element
|
|
63
|
-
await element.element_main()
|
|
64
|
-
print(element.element_result_model.model_dump())
|
|
61
|
+
await element.element_main(element_model, )
|
|
62
|
+
print(element.element_result_model.model_dump_json())
|
|
63
|
+
assert element.element_result_model.elements[0].element_text == '设置'
|
|
65
64
|
|
|
66
65
|
|
|
67
66
|
class TestUi2(unittest.TestCase):
|
|
68
67
|
|
|
69
68
|
def test_s(self):
|
|
70
|
-
driver_object = DriverObject()
|
|
69
|
+
driver_object = DriverObject(log)
|
|
71
70
|
driver_object.set_web(0, r"C:\Program Files\Google\Chrome\Application\chrome.exe")
|
|
72
71
|
base_data = BaseData(test_data, log)
|
|
73
72
|
base_data.url = 'https://www.baidu.com/'
|
|
74
73
|
base_data.context, base_data.page = driver_object.web.new_web_page()
|
|
75
|
-
element = SyncElement(base_data,
|
|
74
|
+
element = SyncElement(base_data, 0)
|
|
76
75
|
element.open_url()
|
|
77
|
-
element.element_main()
|
|
76
|
+
element.element_main(element_model, )
|
|
77
|
+
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|