20250916-正式上线测试
This commit is contained in:
2
.idea/iOSAI.iml
generated
2
.idea/iOSAI.iml
generated
@@ -4,7 +4,7 @@
|
|||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="Python 3.12" jdkType="Python SDK" />
|
<orderEntry type="jdk" jdkName="Python 3.12 (IOS-AI)" jdkType="Python SDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
||||||
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@@ -3,5 +3,5 @@
|
|||||||
<component name="Black">
|
<component name="Black">
|
||||||
<option name="sdkName" value="Python 3.12" />
|
<option name="sdkName" value="Python 3.12" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12" project-jdk-type="Python SDK" />
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (IOS-AI)" project-jdk-type="Python SDK" />
|
||||||
</project>
|
</project>
|
||||||
15
.idea/workspace.xml
generated
15
.idea/workspace.xml
generated
@@ -4,11 +4,14 @@
|
|||||||
<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="20250904-初步功能已完成">
|
<list default="true" id="eceeff5e-51c1-459c-a911-d21ec090a423" name="Changes" comment="20250916-正式上线测试">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/iOSAI.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/iOSAI.iml" 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/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/ResultData.py" beforeDir="false" afterPath="$PROJECT_DIR$/Entity/ResultData.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/ControlUtils.py" beforeDir="false" afterPath="$PROJECT_DIR$/Utils/ControlUtils.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/Utils/ControlUtils.py" beforeDir="false" afterPath="$PROJECT_DIR$/Utils/ControlUtils.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/script/ScriptManager.py" beforeDir="false" afterPath="$PROJECT_DIR$/script/ScriptManager.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" />
|
||||||
@@ -67,7 +70,7 @@
|
|||||||
"git-widget-placeholder": "main",
|
"git-widget-placeholder": "main",
|
||||||
"javascript.nodejs.core.library.configured.version": "20.17.0",
|
"javascript.nodejs.core.library.configured.version": "20.17.0",
|
||||||
"javascript.nodejs.core.library.typings.version": "20.17.58",
|
"javascript.nodejs.core.library.typings.version": "20.17.58",
|
||||||
"last_opened_file_path": "F:/company code/AI item/20250820/iOSAI",
|
"last_opened_file_path": "C:/Users/zhangkai/Desktop/20250915 iosao-随机点击坐标/iOSAI",
|
||||||
"node.js.detected.package.eslint": "true",
|
"node.js.detected.package.eslint": "true",
|
||||||
"node.js.detected.package.tslint": "true",
|
"node.js.detected.package.tslint": "true",
|
||||||
"node.js.selected.package.eslint": "(autodetect)",
|
"node.js.selected.package.eslint": "(autodetect)",
|
||||||
@@ -254,6 +257,8 @@
|
|||||||
<workItem from="1757506636968" duration="5910000" />
|
<workItem from="1757506636968" duration="5910000" />
|
||||||
<workItem from="1757567423145" duration="16668000" />
|
<workItem from="1757567423145" duration="16668000" />
|
||||||
<workItem from="1757998910052" duration="3676000" />
|
<workItem from="1757998910052" duration="3676000" />
|
||||||
|
<workItem from="1758017511127" duration="138000" />
|
||||||
|
<workItem from="1758021469541" duration="8164000" />
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00001" summary="ai 开始测试">
|
<task id="LOCAL-00001" summary="ai 开始测试">
|
||||||
<option name="closed" value="true" />
|
<option name="closed" value="true" />
|
||||||
@@ -325,8 +330,8 @@
|
|||||||
<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" />
|
||||||
<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$1352.coverage" NAME="1352 覆盖结果" MODIFIED="1757662777051" 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$1352.coverage" NAME="1352 覆盖结果" MODIFIED="1757662777051" 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$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$123456.coverage" NAME="123456 覆盖结果" MODIFIED="1757672582575" 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$123456.coverage" NAME="123456 覆盖结果" MODIFIED="1757672582575" 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$2111.coverage" NAME="2111 覆盖结果" MODIFIED="1757330714370" 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$2111.coverage" NAME="2111 覆盖结果" MODIFIED="1757330714370" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
@@ -334,7 +339,7 @@
|
|||||||
<SUITE FILE_PATH="coverage/iOSAI$123__1_.coverage" NAME="123 (1) 覆盖结果" MODIFIED="1756897091135" 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$123__1_.coverage" NAME="123 (1) 覆盖结果" MODIFIED="1756897091135" 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="1757061969626" 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="1757061969626" 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$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="1758002271600" 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="1758029025099" 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="1758002344317" 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$123.coverage" NAME="123 覆盖结果" MODIFIED="1758028808718" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@@ -2,15 +2,15 @@ import json
|
|||||||
|
|
||||||
# 返回数据模型
|
# 返回数据模型
|
||||||
class ResultData(object):
|
class ResultData(object):
|
||||||
def __init__(self, code=200, data=None, msg="获取成功"):
|
def __init__(self, code=200, data=None, massage="获取成功"):
|
||||||
super(ResultData, self).__init__()
|
super(ResultData, self).__init__()
|
||||||
self.code = code
|
self.code = code
|
||||||
self.data = data
|
self.data = data
|
||||||
self.msg = msg
|
self.massage = massage
|
||||||
|
|
||||||
def toJson(self):
|
def toJson(self):
|
||||||
return json.dumps({
|
return json.dumps({
|
||||||
"code": self.code,
|
"code": self.code,
|
||||||
"data": self.data,
|
"data": self.data,
|
||||||
"msg": self.msg
|
"massage": self.massage
|
||||||
}, ensure_ascii=False) # ensure_ascii=False 确保中文不会被转义
|
}, ensure_ascii=False) # ensure_ascii=False 确保中文不会被转义
|
||||||
@@ -266,8 +266,8 @@ def watchLiveForGrowth():
|
|||||||
def stopScript():
|
def stopScript():
|
||||||
body = request.get_json()
|
body = request.get_json()
|
||||||
udid = body.get("udid")
|
udid = body.get("udid")
|
||||||
code, msg = ThreadManager.stop(udid)
|
code, massage = ThreadManager.stop(udid)
|
||||||
return ResultData(code=code, data="", msg=msg).toJson()
|
return ResultData(code=code, data="", massage=massage).toJson()
|
||||||
|
|
||||||
|
|
||||||
# 关注打招呼
|
# 关注打招呼
|
||||||
@@ -320,7 +320,7 @@ def addTempAnchorData():
|
|||||||
"""
|
"""
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
if not data:
|
if not data:
|
||||||
return ResultData(code=400, msg="请求数据为空").toJson()
|
return ResultData(code=400, massage="请求数据为空").toJson()
|
||||||
# 追加到 JSON 文件
|
# 追加到 JSON 文件
|
||||||
AiUtils.save_aclist_flat_append(data, "log/acList.json")
|
AiUtils.save_aclist_flat_append(data, "log/acList.json")
|
||||||
return ResultData(data="ok").toJson()
|
return ResultData(data="ok").toJson()
|
||||||
@@ -344,17 +344,17 @@ def getChatTextInfo():
|
|||||||
|
|
||||||
data = [
|
data = [
|
||||||
{
|
{
|
||||||
'type': 'msg',
|
'type': 'massage',
|
||||||
'dir': 'in',
|
'dir': 'in',
|
||||||
'text': '当前页面无法获取聊天记录,请在tiktok聊天页面进行获取!!!'
|
'text': '当前页面无法获取聊天记录,请在tiktok聊天页面进行获取!!!'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'type': 'msg',
|
'type': 'massage',
|
||||||
'dir': 'in',
|
'dir': 'in',
|
||||||
'text': 'Unable to retrieve chat messages on the current screen. Please navigate to the TikTok chat page and try again!!!'
|
'text': 'Unable to retrieve chat messages on the current screen. Please navigate to the TikTok chat page and try again!!!'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
return ResultData(data=data, msg="解析失败").toJson()
|
return ResultData(data=data, massage="解析失败").toJson()
|
||||||
|
|
||||||
|
|
||||||
# 监控消息
|
# 监控消息
|
||||||
@@ -381,7 +381,7 @@ def upLoadLogLogs():
|
|||||||
if ok:
|
if ok:
|
||||||
return ResultData(data="日志上传成功").toJson()
|
return ResultData(data="日志上传成功").toJson()
|
||||||
else:
|
else:
|
||||||
return ResultData(data="", msg="日志上传失败").toJson()
|
return ResultData(data="", massage="日志上传失败").toJson()
|
||||||
|
|
||||||
|
|
||||||
# 获取当前的主播列表数据
|
# 获取当前的主播列表数据
|
||||||
@@ -449,8 +449,8 @@ def update_last_message():
|
|||||||
multi=False # 只改第一条匹配的
|
multi=False # 只改第一条匹配的
|
||||||
)
|
)
|
||||||
if updated_count > 0:
|
if updated_count > 0:
|
||||||
return ResultData(data=updated_count, msg="修改成功").toJson()
|
return ResultData(data=updated_count, massage="修改成功").toJson()
|
||||||
return ResultData(data=updated_count, msg="修改失败").toJson()
|
return ResultData(data=updated_count, massage="修改失败").toJson()
|
||||||
|
|
||||||
|
|
||||||
@app.route("/delete_last_message", methods=['POST'])
|
@app.route("/delete_last_message", methods=['POST'])
|
||||||
@@ -466,8 +466,8 @@ def delete_last_message():
|
|||||||
multi=False # 只改第一条匹配的
|
multi=False # 只改第一条匹配的
|
||||||
)
|
)
|
||||||
if updated_count > 0:
|
if updated_count > 0:
|
||||||
return ResultData(data=updated_count, msg="修改成功").toJson()
|
return ResultData(data=updated_count, massage="修改成功").toJson()
|
||||||
return ResultData(data=updated_count, msg="修改失败").toJson()
|
return ResultData(data=updated_count, massage="修改失败").toJson()
|
||||||
|
|
||||||
|
|
||||||
# @app.route("/killWda", methods=['POST'])
|
# @app.route("/killWda", methods=['POST'])
|
||||||
|
|||||||
@@ -150,6 +150,8 @@ class ControlUtils(object):
|
|||||||
print("没有找到主页的第一个视频")
|
print("没有找到主页的第一个视频")
|
||||||
return False, num
|
return False, num
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def clickFollow(cls, session, aid):
|
def clickFollow(cls, session, aid):
|
||||||
# 1) 含“关注/已关注/Follow/Following”的首个 cell
|
# 1) 含“关注/已关注/Follow/Following”的首个 cell
|
||||||
@@ -177,6 +179,33 @@ class ControlUtils(object):
|
|||||||
left_x = max(1, rect.x - 20)
|
left_x = max(1, rect.x - 20)
|
||||||
center_y = rect.y + rect.height // 2
|
center_y = rect.y + rect.height // 2
|
||||||
session.tap(left_x, center_y)
|
session.tap(left_x, center_y)
|
||||||
|
@classmethod
|
||||||
|
def userClickProfile(cls, session, aid):
|
||||||
|
try:
|
||||||
|
user_btn = session.xpath("(//XCUIElementTypeButton[@name='用户' and @visible='true'])[1]")
|
||||||
|
if user_btn:
|
||||||
|
user_btn.click()
|
||||||
|
time.sleep(3)
|
||||||
|
follow_btn = session.xpath(
|
||||||
|
"(//XCUIElementTypeTable//XCUIElementTypeButton[@name='关注' or @name='已关注'])[1]"
|
||||||
|
).get(timeout=5)
|
||||||
|
if follow_btn:
|
||||||
|
x, y, w, h = follow_btn.bounds
|
||||||
|
# 垂直方向中心 + 随机 3~8 像素偏移
|
||||||
|
cy = int(y + h / 2 + random.randint(-8, 8))
|
||||||
|
# 横向往左偏移 80~120 像素之间的随机值
|
||||||
|
cx = int(x - random.randint(80, 120))
|
||||||
|
# 点击
|
||||||
|
session.tap(cx, cy)
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 点击一个随机范围
|
# 点击一个随机范围
|
||||||
|
|||||||
@@ -368,14 +368,16 @@ class ScriptManager():
|
|||||||
|
|
||||||
# 定位 "关注" 按钮 通过关注按钮的位置点击主播首页
|
# 定位 "关注" 按钮 通过关注按钮的位置点击主播首页
|
||||||
|
|
||||||
session.appium_settings({"snapshotMaxDepth": 23})
|
session.appium_settings({"snapshotMaxDepth": 25})
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# 点击进入首页
|
# 点击进入首页
|
||||||
ControlUtils.clickFollow(session, aid)
|
ControlUtils.clickFollow(session, aid)
|
||||||
LogManager.method_info("点击进入主播首页", "关注打招呼", udid)
|
LogManager.method_info("点击进入主播首页", "关注打招呼", udid)
|
||||||
except wda.WDAElementNotFoundError:
|
except wda.WDAElementNotFoundError:
|
||||||
LogManager.method_info("未找到进入主播首页的按钮,跳过点击。", "关注打招呼", udid)
|
LogManager.method_info("未找到进入主播首页的按钮,使用第二个方案。", "关注打招呼", udid)
|
||||||
|
enter_room = ControlUtils.userClickProfile(session, aid)
|
||||||
|
if not enter_room:
|
||||||
goBack(2)
|
goBack(2)
|
||||||
session.appium_settings({"snapshotMaxDepth": 15})
|
session.appium_settings({"snapshotMaxDepth": 15})
|
||||||
continue
|
continue
|
||||||
@@ -510,26 +512,25 @@ class ScriptManager():
|
|||||||
goBack(1)
|
goBack(1)
|
||||||
|
|
||||||
# 点击关注按钮
|
# 点击关注按钮
|
||||||
followButton = AiUtils.getFollowButton(session).get(timeout=5)
|
# followButton = AiUtils.getFollowButton(session).get(timeout=5)
|
||||||
if followButton is not None:
|
# if followButton is not None:
|
||||||
# LogManager.method_info("找到关注按钮了", "关注打招呼", udid)
|
# # LogManager.method_info("找到关注按钮了", "关注打招呼", udid)
|
||||||
# followButton.click()
|
# # followButton.click()
|
||||||
x, y, w, h = followButton.bounds
|
# x, y, w, h = followButton.bounds
|
||||||
cx = int(x + w / 2)
|
# cx = int(x + w / 2)
|
||||||
cy = int(y + h / 2)
|
# cy = int(y + h / 2)
|
||||||
# 随机偏移 ±5 px(可自己改范围)
|
# # 随机偏移 ±5 px(可自己改范围)
|
||||||
cx += random.randint(-5, 5)
|
# cx += random.randint(-5, 5)
|
||||||
cy += random.randint(-5, 5)
|
# cy += random.randint(-5, 5)
|
||||||
|
#
|
||||||
ControlUtils.tap_mini_cluster(cx, cy, session)
|
# ControlUtils.tap_mini_cluster(cx, cy, session)
|
||||||
|
#
|
||||||
|
# else:
|
||||||
else:
|
# LogManager.method_info("没找到关注按钮", "关注打招呼", udid)
|
||||||
LogManager.method_info("没找到关注按钮", "关注打招呼", udid)
|
# time.sleep(1)
|
||||||
time.sleep(1)
|
# goBack(4)
|
||||||
goBack(4)
|
# session.appium_settings({"snapshotMaxDepth": 15})
|
||||||
session.appium_settings({"snapshotMaxDepth": 15})
|
# continue
|
||||||
continue
|
|
||||||
|
|
||||||
session.appium_settings({"snapshotMaxDepth": 15})
|
session.appium_settings({"snapshotMaxDepth": 15})
|
||||||
goBack(3)
|
goBack(3)
|
||||||
|
|||||||
Reference in New Issue
Block a user