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

Selenium中已弃用find_element_by_android_uiautomator()的替代方案

问题结论

存在可直接使用的合规替代方案,迁移成本为0,不需要修改原有UIAutomator定位表达式即可完成替换。

具体替换方案

Selenium及配套Appium安卓自动化框架废弃各独立的find_element_by_xxx系列方法后,统一采用通用find_element()/find_elements()方法传入定位类型+定位表达式的形式实现元素查找,针对原安卓UIAutomator定位场景的替换规则如下:

  • 定位类型使用AppiumBy.ANDROID_UIAUTOMATOR(新版Appium客户端推荐),旧版本客户端可使用MobileBy.ANDROID_UIAUTOMATOR
  • 定位表达式和旧方法入参完全一致,原有写好的UiSelector等语句不需要做任何调整
代码示例

已弃用的旧写法

# 该方法已被标记弃用,不建议继续使用
element = driver.find_element_by_android_uiautomator('new UiSelector().text("登录")')
elements = driver.find_elements_by_android_uiautomator('new UiSelector().className("android.widget.Button")')

合规新写法

# 先导入新版定位类
from appium.webdriver.common.appiumby import AppiumBy

# 单元素查找,和旧方法逻辑完全一致
element = driver.find_element(by=AppiumBy.ANDROID_UIAUTOMATOR, value='new UiSelector().text("登录")')
# 多元素查找
elements = driver.find_elements(by=AppiumBy.ANDROID_UIAUTOMATOR, value='new UiSelector().className("android.widget.Button")')
注意事项
  • 如果你使用的是2.0版本之前的旧版Appium Python客户端,可暂时使用MobileBy类,导入路径为from appium.webdriver.common.mobileby import MobileBy,参数传入MobileBy.ANDROID_UIAUTOMATOR即可,但长期维护建议升级客户端版本使用AppiumBy
  • 该替换仅调整方法调用形式,底层定位逻辑、元素匹配规则和旧弃用方法完全一致,不存在兼容性差异

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:54:30