求助:求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
相关产品推荐
相关产品推荐

