【appuim】20、定位一个元素

元素定位操作API

1、应用场景

  • 计算机不像一样聪明,我们需要通过元素定位来获取元素,才能让计算机帮我们操作这个元素

2、步骤

  • 打开uiautomatorviewer工具
  • 打开模拟器或真机
  • 通过uiautomatorviewer工具获取想要进行操作的元素的Node Detail信息
  • 通过元素定位API进行定位
  • 对元素进行相关操作

3、注意点

  • 元素的定位基于当前屏幕范围内展示的可见元素

定位一个元素

1、应用场景

  • 想要对按钮进行点击,想要对输入框进行输入,想要获取文本框的内容,定位元素是自动化操作必须要使用的方法。只有获取元素之后,才能对这个元素进行操作。

2、方法名

# 通过id定位一个元素
# 参数
# 	id_value:元素的resource-id属性值
# 返回值:
#	定位到的单个元素
driver.find_element_by_id(id_value)
# 通过class_name定位一个元素
# 参数:
#	class_value:元素的class属性值
# 返回值:
#	定位到的单个元素
driver.find_element_by_class_name(class_value)
# 通过xpath定位一个元素
# 参数:
#	xpath_value:定位元素的xpath表达式
# 返回值:
#	定位到的单个元素
driver.find_element_by_xpath(xpath_value)

3、示例

  • 通过id的形式,定位"放大镜"按钮,并点击
  • 通过class的形式,定位"输入框",输入"hello"
  • 通过xpath的形式,定位"返回"按钮,并点击
import time
from appium import webdriver

desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '7.1'
desired_caps['deviceName'] = '192.168.56.101:5555'

# 手机参数
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'


driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

# 通过id定位放大镜,并点击
element = driver.find_element_by_id('com.android.settings:id/search').click()
print('id_element:', element)

class_element = driver.find_element_by_class_name('android.widget.EditText').send_keys("hello")
print('class_element:', class_element)

xpath_element = driver.find_element_by_xpath('//*[@content-desc="收起"]').click()
print('xpath_element:', xpath_element)

time.sleep(5)
driver.quit()

4、注意

  • 如果很多元素的"特征"相同,使用find_element_by_xxx的方法会找到第一个
posted @ 2022-05-24 10:00  郭祺迦  阅读(73)  评论(0)    收藏  举报