action建立连接(主食了开始测量之后的逻辑),add_trasition(调用run_add()函数)加转点。
This commit is contained in:
146
add_transition_point.py
Normal file
146
add_transition_point.py
Normal file
@@ -0,0 +1,146 @@
|
||||
"""
|
||||
添加转点脚本
|
||||
使用已建立的 Appium 连接来添加转点
|
||||
"""
|
||||
import json
|
||||
import os
|
||||
import logging
|
||||
import sys
|
||||
from selenium.common.exceptions import TimeoutException, NoSuchElementException
|
||||
from appium.webdriver.common.appiumby import AppiumBy
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
|
||||
# Session 信息文件路径
|
||||
SESSION_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "appium_session.json")
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s: %(message)s")
|
||||
|
||||
|
||||
def load_session_info():
|
||||
"""从文件加载 session 信息"""
|
||||
if not os.path.exists(SESSION_FILE):
|
||||
logging.error(f"Session 文件不存在: {SESSION_FILE}")
|
||||
logging.error("请先运行 connect_appium.py 建立连接")
|
||||
return None
|
||||
|
||||
try:
|
||||
with open(SESSION_FILE, "r", encoding="utf-8") as f:
|
||||
return json.load(f)
|
||||
except Exception as e:
|
||||
logging.error(f"读取 session 文件失败: {e}")
|
||||
return None
|
||||
|
||||
|
||||
def attach_to_session(session_id, device_id):
|
||||
"""Attach 到现有的 Appium session"""
|
||||
from appium import webdriver
|
||||
from appium.options.android import UiAutomator2Options
|
||||
|
||||
try:
|
||||
server_url = "http://127.0.0.1:4723/wd/hub"
|
||||
|
||||
# 创建 options
|
||||
options = UiAutomator2Options()
|
||||
options.platform_name = "Android"
|
||||
options.device_name = device_id
|
||||
options.automation_name = "UiAutomator2"
|
||||
options.udid = device_id
|
||||
|
||||
# 连接到现有 session
|
||||
driver = webdriver.Remote(
|
||||
server_url,
|
||||
options=options
|
||||
)
|
||||
|
||||
# 手动设置 session_id
|
||||
driver.session_id = session_id
|
||||
|
||||
# 验证 session 是否有效
|
||||
try:
|
||||
current_package = driver.current_package
|
||||
logging.info(f"Session 有效,当前应用: {current_package}")
|
||||
except Exception as e:
|
||||
logging.error(f"Session 无效: {e}")
|
||||
return None, None
|
||||
|
||||
wait = WebDriverWait(driver, 20)
|
||||
return driver, wait
|
||||
|
||||
except Exception as e:
|
||||
logging.error(f"Attach 到 session 失败: {e}")
|
||||
return None, None
|
||||
|
||||
|
||||
def get_driver_from_connection():
|
||||
"""从已建立的连接获取 driver"""
|
||||
session_info = load_session_info()
|
||||
if not session_info:
|
||||
return None, None, None
|
||||
|
||||
session_id = session_info.get("session_id")
|
||||
device_id = session_info.get("device_id")
|
||||
|
||||
if not session_id or not device_id:
|
||||
logging.error("Session 信息不完整")
|
||||
return None, None, None
|
||||
|
||||
driver, wait = attach_to_session(session_id, device_id)
|
||||
return driver, wait, device_id
|
||||
|
||||
|
||||
def add_transition_point(driver, wait, device_id=None):
|
||||
"""
|
||||
添加转点
|
||||
|
||||
参数:
|
||||
driver: WebDriver 实例
|
||||
wait: WebDriverWait 实例
|
||||
device_id: 设备ID(可选)
|
||||
|
||||
返回:
|
||||
bool: 是否成功
|
||||
"""
|
||||
device_str = f"设备 {device_id} " if device_id else ""
|
||||
|
||||
try:
|
||||
# 查找并点击添加转点按钮
|
||||
add_transition_btn = wait.until(
|
||||
EC.element_to_be_clickable((AppiumBy.ID, "com.bjjw.cjgc:id/btn_add_ZPoint"))
|
||||
)
|
||||
add_transition_btn.click()
|
||||
logging.info(f"{device_str}已点击添加转点按钮")
|
||||
return True
|
||||
except TimeoutException:
|
||||
logging.error(f"{device_str}等待添加转点按钮超时")
|
||||
return False
|
||||
except Exception as e:
|
||||
logging.error(f"{device_str}添加转点时出错: {str(e)}")
|
||||
return False
|
||||
|
||||
|
||||
def main():
|
||||
"""主函数"""
|
||||
# 获取连接
|
||||
driver, wait, device_id = get_driver_from_connection()
|
||||
|
||||
if not driver:
|
||||
logging.error("无法获取 Appium 连接,请先运行 connect_appium.py")
|
||||
return False
|
||||
|
||||
logging.info(f"成功连接到设备: {device_id}")
|
||||
|
||||
# 添加转点
|
||||
result = add_transition_point(driver, wait, device_id)
|
||||
|
||||
if result:
|
||||
logging.info("添加转点成功!")
|
||||
else:
|
||||
logging.error("添加转点失败")
|
||||
|
||||
return result
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = main()
|
||||
sys.exit(0 if success else 1)
|
||||
Reference in New Issue
Block a user