Appium中使用python代码查找元素方法之by_accessibility_id报错问题!

Appium定位元素需要使用------>UIAutoMatorViewer,如下图所示:

因为By包升级,以前的老方法不可用,例如下面的代码

driver.find_element_by_accessibility_id("content-desc属性值")
#python 版本不同,不兼容这种方法

然后我又试了新的by包,如下面这种:

# id定位放大器,并点击图标
driver.find_element(by=By.ID,value="com.android.settings:id/search").click()
sleep(1)
# 使用class定位,输入hello
driver.find_element(by=By.CLASS_NAME,value="android.widget.EditText").send_keys('hello')
sleep(1)
# 使用xpath定位返会按钮,并点击
driver.find_element(by=By.XPATH,value="//*[@class='android.widget.ImageButton']").click()
sleep(1)

但是学习过程中发现新方法无法调用find_element_by_accessibility_id这种方法,python代码报黄色,我试了好几种编写方法,都会报错!

driver.find_element_by_accessibility_id("content-desc属性值")#  ----->跑不通
driver.find_element(by=By.accessibility_id,value="content-desc属性值")#  ----->跑不通
driver.find_element("accessibility","content-desc属性值").click()#  ----->跑不通

然后查询其他人的解决方法得出能正确跑通的方法,具体如下操作:

# 导包----->AppiumBy
from appium.webdriver.common.appiumby import AppiumBy
#使用这种方法去调用元素,可以运行
driver.find_element(AppiumBy.ACCESSIBILITY_ID,value='搜索设置')

运行结果如下截图:

完整实现需求代码是这样的:

"""
需求:
# id定位放大器,并点击图标
# 使用class定位,输入hello
# 使用xpath定位返会按钮,并点击
# 使用name定位,点击放大镜按钮
#退出程序
"""

import os
from time import sleep

from appium import webdriver
# 导个AppiumBy包
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.common.by import By

# 定义字典变量
desired_caps = {}
# 字典追加启动参
desired_caps["platformName"] = "Android"
desired_caps["platformVersion"] = "7.1.2"
desired_caps["deviceName"] = "192.168.56.101:5555"
desired_caps["appPackage"] = "com.android.settings"
desired_caps["appActivity"] = ".Settings"
# 设置中文
desired_caps["unicodeKeyboard"] = True
desired_caps["resetKeyboard"] = True
# 获取driver
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
"""
上面的代码不过多说明,
基本启动appium的代码
我这里使用的是雷电模拟器+appium+python代码方式
"""
sleep(1)
# id定位放大器,并点击图标
driver.find_element(by=By.ID, value="com.android.settings:id/search").click()
sleep(1)
# 使用class定位,输入hello
driver.find_element(by=By.CLASS_NAME, value="android.widget.EditText").send_keys('hello')
sleep(1)
# 使用xpath定位返会按钮,并点击
driver.find_element(by=By.XPATH, value="//*[@class='android.widget.ImageButton']").click()
sleep(1)
# 使用name定位,点击放大镜按钮
# 我在这里发现了问题!!!!------>by_accessibility_id方法不可用!

# driver.find_element_by_accessibility_id("content-desc属性值")#  ----->跑不通
# driver.find_element(by=By.accessibility_id,value="content-desc属性值")#  ----->跑不通
# driver.find_element("accessibility","content-desc属性值").click()#  ----->跑不通
# 正确的输入方法如下所示!!!


print(f"方便看能否运行,我打印了这行字...")
driver.find_element(AppiumBy.ACCESSIBILITY_ID, value='搜索设置')
print(f"ok调试结束,方法成功....")
sleep(3)
driver.quit()

学习过程遇到的一个小问题,发布出来供大家参考,本人技术有限,感谢观看!

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值