You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:求Python+Appium通过图像定位元素并点击的可用示例代码

使用Appium通过图像查找并点击元素的Python实现

修正后的完整代码

import base64
from appium import webdriver
from appium.webdriver.common.mobileby import MobileBy

# 将目标元素图片转换为Base64编码
with open(r"C:\Users\ADMIN\Desktop\flipkart.png", "rb") as image_file:
    image_base64 = base64.b64encode(image_file.read()).decode("utf-8")

# 设备与会话配置参数
caps = {
    "platformName": "Android",
    "appium:deviceName": "Galaxy M21",
    "appium:udid": "RZ8N50CSZWT",
    "noReset": True,
    # 如需自动启动目标APP,添加以下参数(需替换为对应APP的包名和启动页)
    # "appium:appPackage": "com.flipkart.android",
    # "appium:appActivity": "com.flipkart.android.SplashActivity"
}

# 初始化Appium驱动
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
driver.implicitly_wait(20)

try:
    # 通过图像定位元素(新版Appium推荐的标准写法)
    element = driver.find_element(MobileBy.IMAGE, image_base64)
    element.click()
finally:
    # 确保会话结束后关闭驱动
    driver.quit()

关键修正与注意事项

  • 补全依赖导入:原代码缺少from appium import webdriver,会导致驱动初始化失败
  • API兼容性调整:find_element_by_image属于旧版废弃API,新版Appium建议使用find_element(MobileBy.IMAGE, 编码内容)的标准写法
  • APP启动配置:如果需要自动打开目标APP,需在caps中补充appPackage和appActivity参数,可通过adb shell dumpsys window | grep mCurrentFocus命令获取对应值
  • 图像匹配优化:
    • 用于识别的图片需只保留目标元素区域,避免多余背景干扰
    • 确保图片分辨率与设备屏幕分辨率一致,否则会大幅降低识别成功率
    • 需保证Appium服务端支持图像识别功能,建议使用集成OpenCV的Appium Desktop或官方服务端

内容的提问来源于stack exchange,提问作者zenith networks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 14:40:29