当前位置: 首页 > article >正文

【appium 安卓10 QQ发送消息】

代码

from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# 设置 Desired Capabilities
desired_caps = {
    "platformName": "Android",
    "platformVersion": "10.0",
    "deviceName": "Android Emulator",
    "appPackage": "com.tencent.mobileqq",
    "appActivity": ".activity.SplashActivity",
    "automationName": "UiAutomator2",
    "noReset": True,
    "appium:ignoreHiddenApiPolicyError": True,
    "appium:forceAppLaunch": True
}

# 创建 Appium WebDriver 实例
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

try:
    # 等待并点击搜索输入框
    search_box = WebDriverWait(driver, 30).until(
        EC.element_to_be_clickable((By.ID, "com.tencent.mobileqq:id/et_search_keyword"))
    )
    search_box.click()
    print("已成功点击搜索输入框")

     # 等待搜索框重新变得可输入
    search_box = WebDriverWait(driver, 30).until(
        EC.element_to_be_clickable((By.ID, "com.tencent.mobileqq:id/et_search_keyword"))
    )

    # 输入 "你夏哥" 到搜索框
    search_box.send_keys("你夏哥")
    print("已成功输入 '你夏哥'")

    # 等待并点击 ID 为 com.tencent.mobileqq:id/dpr 的元素
    target_element = WebDriverWait(driver, 30).until(
        EC.element_to_be_clickable((By.ID, "com.tencent.mobileqq:id/dpr"))
    )
    target_element.click()
    print("已成功点击你夏哥")

    # 等待并点击消息发送框
    input_box = WebDriverWait(driver, 30).until(
        EC.element_to_be_clickable((By.ID, "com.tencent.mobileqq:id/input"))
    )
    input_box.click()
    print("已成功点击消息发送框")

    # 输入消息 "Hello World!"
    input_box.send_keys("Hello World!")
    print("已成功输入消息 'Hello World!'")

    # 等待并点击发送按钮
    send_button = WebDriverWait(driver, 30).until(
        EC.element_to_be_clickable((By.ID, "com.tencent.mobileqq:id/fun_btn"))
    )
    send_button.click()
    print("已成功点击发送按钮")

except Exception as e:
    print(f"操作失败: {e}")

finally:
    # 不关闭驱动,确保应用保持打开
    pass

http://www.kler.cn/a/379548.html

相关文章:

  • 探索Python编程:从入门到实践的全面指南
  • 云轴科技ZStack在CID大会上分享VF网卡热迁移技术
  • (七)Python运算符和优先级
  • 【Java设计模式】16-26章
  • 私有化视频平台EasyCVR视频汇聚平台接入RTMP协议推流为何无法播放?
  • 使用DJL和PaddlePaddle的口罩检测详细指南
  • 不用买PSP,画质甚至更好,这款免费神器让你玩遍经典游戏
  • 基于卷积神经网络的棉花病虫害识别与防治系统,resnet50,mobilenet模型【pytorch框架+python源码】
  • Spring的常用注解之@Component——day1
  • 【Keyframes】Deep Convolutional Pooling Transformer for Deepfake Detection
  • 【VMware】使用笔记
  • STL:标准模板库
  • Ubuntu 22.4 LTS 源码编译Tigervnc
  • 【P2-9】ESP8266 WIFI模块在STA模式下作为TCP客户端上电自动进入透传数据模式
  • javaNIO核心知识.中
  • 苍穹外卖Day3test报错javax.websocket.server.ServerContainer not available
  • Qt 实战(10)模型视图 | 10.7、自定义 QTableWidget
  • 关于最新create-react-app使用react-app-rewired2.x添加webpack配置
  • [CISCN 2021初赛]robot
  • 传统的自然语言处理评估指标
  • GPU 服务器:高性能计算的核心驱动力
  • Web Broker(Web服务应用程序)入门教程(2)
  • LeetCode 3259.超级饮料的最大化能力(动态规划状态机模型入门)
  • 探索数据管理新境界:PyTables库的奥秘
  • 低代码信息中心:赋能创新的未来
  • 密码学是如何保护数据传输的安全性?