20250904-初步功能已完成
This commit is contained in:
34
.idea/workspace.xml
generated
34
.idea/workspace.xml
generated
@@ -4,19 +4,12 @@
|
|||||||
<option name="autoReloadType" value="SELECTIVE" />
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="eceeff5e-51c1-459c-a911-d21ec090a423" name="Changes" comment="ai 开始测试">
|
<list default="true" id="eceeff5e-51c1-459c-a911-d21ec090a423" name="Changes" comment="20250904-初步功能已完成">
|
||||||
<change afterPath="$PROJECT_DIR$/resources/0712d741bca636be03668ea6ff53a64141c0151e/bgv.png" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/tidevice_entry.py" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/resources/2335890f77fb51322361bd46b85f7fd1311aed53/bgv.png" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/resources/fc18bc21951daf7be012a8a687b00a4de8b24c18/bgv.png" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/iOSAI.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/iOSAI.iml" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Entity/Variables.py" beforeDir="false" afterPath="$PROJECT_DIR$/Entity/Variables.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Module/FlaskService.py" beforeDir="false" afterPath="$PROJECT_DIR$/Module/FlaskService.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/Module/FlaskService.py" beforeDir="false" afterPath="$PROJECT_DIR$/Module/FlaskService.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Utils/AiUtils.py" beforeDir="false" afterPath="$PROJECT_DIR$/Utils/AiUtils.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/Utils/AiUtils.py" beforeDir="false" afterPath="$PROJECT_DIR$/Utils/AiUtils.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Utils/LogManager.py" beforeDir="false" afterPath="$PROJECT_DIR$/Utils/LogManager.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/Utils/LogManager.py" beforeDir="false" afterPath="$PROJECT_DIR$/Utils/LogManager.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/script/ScriptManager.py" beforeDir="false" afterPath="$PROJECT_DIR$/script/ScriptManager.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/tidevice_entry.py" beforeDir="false" afterPath="$PROJECT_DIR$/tidevice_entry.py" afterDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@@ -73,7 +66,7 @@
|
|||||||
"node.js.selected.package.eslint": "(autodetect)",
|
"node.js.selected.package.eslint": "(autodetect)",
|
||||||
"node.js.selected.package.tslint": "(autodetect)",
|
"node.js.selected.package.tslint": "(autodetect)",
|
||||||
"nodejs_package_manager_path": "npm",
|
"nodejs_package_manager_path": "npm",
|
||||||
"settings.editor.selected.configurable": "com.gitee.ui.GiteeSettingsConfigurable",
|
"settings.editor.selected.configurable": "vcs.Git",
|
||||||
"vue.rearranger.settings.migration": "true"
|
"vue.rearranger.settings.migration": "true"
|
||||||
}
|
}
|
||||||
}</component>
|
}</component>
|
||||||
@@ -188,7 +181,9 @@
|
|||||||
<workItem from="1756902713950" duration="1669000" />
|
<workItem from="1756902713950" duration="1669000" />
|
||||||
<workItem from="1756905956255" duration="1709000" />
|
<workItem from="1756905956255" duration="1709000" />
|
||||||
<workItem from="1756962238298" duration="14230000" />
|
<workItem from="1756962238298" duration="14230000" />
|
||||||
<workItem from="1756979981948" duration="4536000" />
|
<workItem from="1756979981948" duration="13770000" />
|
||||||
|
<workItem from="1757048603166" duration="2718000" />
|
||||||
|
<workItem from="1757052291289" duration="7810000" />
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00001" summary="ai 开始测试">
|
<task id="LOCAL-00001" summary="ai 开始测试">
|
||||||
<option name="closed" value="true" />
|
<option name="closed" value="true" />
|
||||||
@@ -198,7 +193,15 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1756303135240</updated>
|
<updated>1756303135240</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="2" />
|
<task id="LOCAL-00002" summary="20250904-初步功能已完成">
|
||||||
|
<option name="closed" value="true" />
|
||||||
|
<created>1756985736631</created>
|
||||||
|
<option name="number" value="00002" />
|
||||||
|
<option name="presentableId" value="LOCAL-00002" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1756985736631</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="3" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="TypeScriptGeneratedFilesManager">
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
@@ -221,7 +224,8 @@
|
|||||||
<component name="VcsManagerConfiguration">
|
<component name="VcsManagerConfiguration">
|
||||||
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
|
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
|
||||||
<MESSAGE value="ai 开始测试" />
|
<MESSAGE value="ai 开始测试" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="ai 开始测试" />
|
<MESSAGE value="20250904-初步功能已完成" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="20250904-初步功能已完成" />
|
||||||
</component>
|
</component>
|
||||||
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
||||||
<SUITE FILE_PATH="coverage/iOSAI$LogManager.coverage" NAME="LogManager 覆盖结果" MODIFIED="1756711414832" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/Utils" />
|
<SUITE FILE_PATH="coverage/iOSAI$LogManager.coverage" NAME="LogManager 覆盖结果" MODIFIED="1756711414832" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/Utils" />
|
||||||
@@ -229,10 +233,10 @@
|
|||||||
<SUITE FILE_PATH="coverage/iOSAI$FlaskService.coverage" NAME="FlaskService 覆盖结果" MODIFIED="1756730187792" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/Module" />
|
<SUITE FILE_PATH="coverage/iOSAI$FlaskService.coverage" NAME="FlaskService 覆盖结果" MODIFIED="1756730187792" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/Module" />
|
||||||
<SUITE FILE_PATH="coverage/iOSAI$test.coverage" NAME="test 覆盖结果" MODIFIED="1756467664420" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
<SUITE FILE_PATH="coverage/iOSAI$test.coverage" NAME="test 覆盖结果" MODIFIED="1756467664420" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
<SUITE FILE_PATH="coverage/iOSAI$windows_run.coverage" NAME="windows_run Coverage Results" MODIFIED="1756473558532" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/script" />
|
<SUITE FILE_PATH="coverage/iOSAI$windows_run.coverage" NAME="windows_run Coverage Results" MODIFIED="1756473558532" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/script" />
|
||||||
<SUITE FILE_PATH="coverage/iOSAI$tidevice_entry.coverage" NAME="tidevice_entry 覆盖结果" MODIFIED="1756906458478" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
<SUITE FILE_PATH="coverage/iOSAI$tidevice_entry.coverage" NAME="tidevice_entry 覆盖结果" MODIFIED="1757051299128" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
<SUITE FILE_PATH="coverage/iOSAI$mac_wda_agent.coverage" NAME="mac_wda_agent Coverage Results" MODIFIED="1756473148639" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/script" />
|
<SUITE FILE_PATH="coverage/iOSAI$mac_wda_agent.coverage" NAME="mac_wda_agent Coverage Results" MODIFIED="1756473148639" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/script" />
|
||||||
<SUITE FILE_PATH="coverage/iOSAI$ScriptManager.coverage" NAME="ScriptManager 覆盖结果" MODIFIED="1756896057801" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/script" />
|
<SUITE FILE_PATH="coverage/iOSAI$ScriptManager.coverage" NAME="ScriptManager 覆盖结果" MODIFIED="1756896057801" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/script" />
|
||||||
<SUITE FILE_PATH="coverage/iOSAI$Main.coverage" NAME="Main 覆盖结果" MODIFIED="1756985459457" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" />
|
<SUITE FILE_PATH="coverage/iOSAI$Main.coverage" NAME="Main 覆盖结果" MODIFIED="1757059426880" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" />
|
||||||
<SUITE FILE_PATH="coverage/iOSAI$123.coverage" NAME="123 覆盖结果" MODIFIED="1756712884433" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/test" />
|
<SUITE FILE_PATH="coverage/iOSAI$123.coverage" NAME="123 覆盖结果" MODIFIED="1756712884433" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/test" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@@ -17,8 +17,7 @@ from Entity.ResultData import ResultData
|
|||||||
from Utils.ControlUtils import ControlUtils
|
from Utils.ControlUtils import ControlUtils
|
||||||
from Utils.ThreadManager import ThreadManager
|
from Utils.ThreadManager import ThreadManager
|
||||||
from script.ScriptManager import ScriptManager
|
from script.ScriptManager import ScriptManager
|
||||||
from Entity.Variables import anchorList, addModelToAnchorList
|
from Entity.Variables import anchorList, addModelToAnchorList,prologueList
|
||||||
import Entity.Variables
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
CORS(app)
|
CORS(app)
|
||||||
@@ -278,6 +277,7 @@ def getChatTextInfo():
|
|||||||
session = client.session()
|
session = client.session()
|
||||||
xml = session.source()
|
xml = session.source()
|
||||||
try:
|
try:
|
||||||
|
print(xml)
|
||||||
result = AiUtils.extract_messages_from_xml(xml)
|
result = AiUtils.extract_messages_from_xml(xml)
|
||||||
print(result)
|
print(result)
|
||||||
return ResultData(data=result).toJson()
|
return ResultData(data=result).toJson()
|
||||||
@@ -318,12 +318,18 @@ def upLoadLogFile():
|
|||||||
userId = data.get("userId")
|
userId = data.get("userId")
|
||||||
tenantId = data.get("tenantId")
|
tenantId = data.get("tenantId")
|
||||||
ok = LogManager.upload_all_logs("http://47.79.98.113:8101/api/log/upload", token, userId, tenantId)
|
ok = LogManager.upload_all_logs("http://47.79.98.113:8101/api/log/upload", token, userId, tenantId)
|
||||||
|
|
||||||
if ok:
|
if ok:
|
||||||
print(123)
|
|
||||||
return ResultData(data="日志上传成功").toJson()
|
return ResultData(data="日志上传成功").toJson()
|
||||||
else:
|
else:
|
||||||
return ResultData(data="", msg="日志上传失败").toJson()
|
return ResultData(data="", msg="日志上传失败").toJson()
|
||||||
|
|
||||||
|
# @app.route("/", methods=['POST'])
|
||||||
|
# def upLoadLogFile():
|
||||||
|
# datas = request.get_json() # 解析 JSON
|
||||||
|
# # 先清空打招呼语
|
||||||
|
# prologueList.clear()
|
||||||
|
# # 添加新的打招呼语句
|
||||||
|
# for data in datas:
|
||||||
|
# prologueList.append(data)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
app.run("0.0.0.0", port=5000, debug=True, use_reloader=False)
|
|
||||||
|
|||||||
114
Utils/AiUtils.py
114
Utils/AiUtils.py
@@ -294,109 +294,6 @@ class AiUtils(object):
|
|||||||
print(f"btn:{btn}")
|
print(f"btn:{btn}")
|
||||||
return cls.findNumber(btn.label)
|
return cls.findNumber(btn.label)
|
||||||
|
|
||||||
# 获取聊天页面的聊天信息
|
|
||||||
# @classmethod
|
|
||||||
# def extract_messages_from_xml(cls, xml: str):
|
|
||||||
# """
|
|
||||||
# 仅返回当前屏幕中“可见的”聊天内容(含时间分隔)
|
|
||||||
# """
|
|
||||||
# from lxml import etree
|
|
||||||
# root = etree.fromstring(xml.encode("utf-8"))
|
|
||||||
# items = []
|
|
||||||
#
|
|
||||||
# # 判断是否是聊天页面
|
|
||||||
# is_chat_page = False
|
|
||||||
# if root.xpath('//XCUIElementTypeStaticText[contains(@traits, "Header")]'):
|
|
||||||
# is_chat_page = True
|
|
||||||
# elif root.xpath('//XCUIElementTypeCell//XCUIElementTypeOther[@name or @label]'):
|
|
||||||
# is_chat_page = True
|
|
||||||
#
|
|
||||||
# if not is_chat_page:
|
|
||||||
# raise Exception("请先进入聊天页面")
|
|
||||||
#
|
|
||||||
# # 屏幕宽度
|
|
||||||
# app = root.xpath('/XCUIElementTypeApplication')
|
|
||||||
#
|
|
||||||
# screen_w = cls.parse_float(app[0], 'width', 414.0) if app else 414.0
|
|
||||||
#
|
|
||||||
# # 找 Table 的可见范围
|
|
||||||
# table = root.xpath('//XCUIElementTypeTable')
|
|
||||||
# if table:
|
|
||||||
# table = table[0]
|
|
||||||
# table_top = cls.parse_float(table, 'y', 0.0)
|
|
||||||
# table_h = cls.parse_float(table, 'height', 0.0)
|
|
||||||
# table_bottom = table_top + table_h
|
|
||||||
# else:
|
|
||||||
# table_top, table_bottom = 0.0, cls.parse_float(app[0], 'height', 736.0) if app else 736.0
|
|
||||||
#
|
|
||||||
# def in_view(el) -> bool:
|
|
||||||
# """元素在聊天区内并且可见"""
|
|
||||||
# if el.get('visible') != 'true':
|
|
||||||
# return False
|
|
||||||
# y = cls.parse_float(el, 'y', -1e9)
|
|
||||||
# h = cls.parse_float(el, 'height', 0.0)
|
|
||||||
# by = y + h
|
|
||||||
# return not (by <= table_top or y >= table_bottom)
|
|
||||||
#
|
|
||||||
# # 时间分隔
|
|
||||||
# for t in root.xpath('//XCUIElementTypeStaticText[contains(@traits, "Header")]'):
|
|
||||||
# if not in_view(t):
|
|
||||||
# continue
|
|
||||||
# txt = (t.get('label') or t.get('name') or t.get('value') or '').strip()
|
|
||||||
# if txt:
|
|
||||||
# items.append({'type': 'time', 'text': txt, 'y': cls.parse_float(t, 'y')})
|
|
||||||
#
|
|
||||||
# # 消息气泡
|
|
||||||
# EXCLUDES = {'Heart', 'Lol', 'ThumbsUp', '分享发布内容', '视频贴纸标签页', '双击发送表情'}
|
|
||||||
#
|
|
||||||
# msg_nodes = table.xpath(
|
|
||||||
# './/XCUIElementTypeCell[@visible="true"]'
|
|
||||||
# '//XCUIElementTypeOther[@visible="true" and (@name or @label) and not(ancestor::XCUIElementTypeCollectionView)]'
|
|
||||||
# ) if table is not None else []
|
|
||||||
#
|
|
||||||
# for o in msg_nodes:
|
|
||||||
# text = (o.get('label') or o.get('name') or '').strip()
|
|
||||||
# if not text or text in EXCLUDES:
|
|
||||||
# continue
|
|
||||||
# if not in_view(o):
|
|
||||||
# continue
|
|
||||||
#
|
|
||||||
# # 找所在 Cell
|
|
||||||
# cell = o.getparent()
|
|
||||||
# while cell is not None and cell.get('type') != 'XCUIElementTypeCell':
|
|
||||||
# cell = cell.getparent()
|
|
||||||
#
|
|
||||||
# x = cls.parse_float(o, 'x')
|
|
||||||
# y = cls.parse_float(o, 'y')
|
|
||||||
# w = cls.parse_float(o, 'width')
|
|
||||||
# right_edge = x + w
|
|
||||||
#
|
|
||||||
# direction = None
|
|
||||||
# # 头像位置判定
|
|
||||||
# if cell is not None:
|
|
||||||
# avatar_btns = cell.xpath(
|
|
||||||
# './/XCUIElementTypeButton[@visible="true" and (@name="图片头像" or @label="图片头像")]')
|
|
||||||
# if avatar_btns:
|
|
||||||
# ax = cls.parse_float(avatar_btns[0], 'x')
|
|
||||||
# direction = 'in' if ax < (screen_w / 2) else 'out'
|
|
||||||
# # 右对齐兜底
|
|
||||||
# if direction is None:
|
|
||||||
# direction = 'out' if right_edge > (screen_w - 20) else 'in'
|
|
||||||
#
|
|
||||||
# items.append({'type': 'msg', 'dir': direction, 'text': text, 'y': y})
|
|
||||||
#
|
|
||||||
# # 排序 & 清理
|
|
||||||
# items.sort(key=lambda i: i['y'])
|
|
||||||
# for it in items:
|
|
||||||
# it.pop('y', None)
|
|
||||||
# return items
|
|
||||||
#
|
|
||||||
# @classmethod
|
|
||||||
# def parse_float(cls, el, attr, default=0.0):
|
|
||||||
# try:
|
|
||||||
# return float(el.get(attr, default))
|
|
||||||
# except Exception:
|
|
||||||
# return default
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def extract_messages_from_xml(cls, xml: str):
|
def extract_messages_from_xml(cls, xml: str):
|
||||||
@@ -407,15 +304,6 @@ class AiUtils(object):
|
|||||||
root = etree.fromstring(xml.encode("utf-8"))
|
root = etree.fromstring(xml.encode("utf-8"))
|
||||||
items = []
|
items = []
|
||||||
|
|
||||||
# 判断是否是聊天页面
|
|
||||||
is_chat_page = False
|
|
||||||
if root.xpath('//XCUIElementTypeStaticText[contains(@traits, "Header")]'):
|
|
||||||
is_chat_page = True
|
|
||||||
elif root.xpath('//XCUIElementTypeCell//XCUIElementTypeOther[@name or @label]'):
|
|
||||||
is_chat_page = True
|
|
||||||
|
|
||||||
if not is_chat_page:
|
|
||||||
raise Exception("请先进入聊天页面")
|
|
||||||
|
|
||||||
# 屏幕宽度
|
# 屏幕宽度
|
||||||
app = root.xpath('/XCUIElementTypeApplication')
|
app = root.xpath('/XCUIElementTypeApplication')
|
||||||
@@ -571,5 +459,3 @@ class AiUtils(object):
|
|||||||
return t
|
return t
|
||||||
|
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
# AiUtils.getCurrentScreenSource()
|
|
||||||
|
|||||||
@@ -267,9 +267,9 @@ class LogManager:
|
|||||||
print("[upload_all_logs] 日志目录不存在")
|
print("[upload_all_logs] 日志目录不存在")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
|
timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
filename = f"{timestamp}_logs.zip"
|
filename = f"{timestamp}_logs.zip"
|
||||||
|
print(filename)
|
||||||
zip_buf = io.BytesIO()
|
zip_buf = io.BytesIO()
|
||||||
with zipfile.ZipFile(zip_buf, "w", compression=zipfile.ZIP_DEFLATED) as zf:
|
with zipfile.ZipFile(zip_buf, "w", compression=zipfile.ZIP_DEFLATED) as zf:
|
||||||
for p in log_path.rglob("*"):
|
for p in log_path.rglob("*"):
|
||||||
|
|||||||
45
tidevice_entry.py
Normal file
45
tidevice_entry.py
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# from Utils.Requester import Requester
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# # 获取主播的名称
|
||||||
|
# anchor_name = "123"
|
||||||
|
#
|
||||||
|
# anchorWithSession = {}
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# while True:
|
||||||
|
# # 向ai发送信息
|
||||||
|
# last_msg_text = input("请输入:")
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# if anchor_name not in anchorWithSession:
|
||||||
|
# # 如果是第一次发消息(没有sessionId的情况)
|
||||||
|
# response = Requester.chatToAi({"msg": last_msg_text})
|
||||||
|
# aiResult = response['result']
|
||||||
|
# sessionId = response['session_id']
|
||||||
|
#
|
||||||
|
# anchorWithSession[anchor_name] = sessionId
|
||||||
|
# # 找到输入框,输入ai返回出来的消息
|
||||||
|
# print(aiResult)
|
||||||
|
#
|
||||||
|
# else:
|
||||||
|
# # 如果不是第一次发消息(证明存储的有sessionId)
|
||||||
|
# sessionId = anchorWithSession[anchor_name]
|
||||||
|
# response = Requester.chatToAi({"msg": last_msg_text, "sid": sessionId})
|
||||||
|
# aiResult = response['result']
|
||||||
|
# print(aiResult)
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
import wda
|
||||||
|
|
||||||
|
udid = "e5ab9d3c548302dca3b1383589ac43eedd41f24e"
|
||||||
|
|
||||||
|
client = wda.USBClient(udid)
|
||||||
|
session = client.session()
|
||||||
|
session.appium_settings({"snapshotMaxDepth": 15})
|
||||||
|
|
||||||
|
print(session.source())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user