APP自动化5--界面元素的定位方法

一. 常用的元素定位方法如下

  • resourceid属性定位
  • text文本定位
  • description或者content-desc实现元素定位
  • xpath定位,使用weditor中的xpath定位

1. resourceid属性定位

driver.find_element(MobileBy.ID,'com.tal.kaoyan:id/tip_commit')
 1 import time
 2 
 3 from appium import webdriver
 4 from appium.webdriver.common.mobileby import MobileBy
 5 from selenium.webdriver.support.wait import WebDriverWait
 6 from selenium.webdriver.support import expected_conditions as EC
 7 
 8 # 1 设置终端参数
 9 desired_caps = {
10     "platformName": "Android",
11     "platformVersion": 9,
12     "deviceName": "Android",
13     "appPackage": "com.tal.kaoyan",
14     "appActivity": "com.tal.kaoyan.ui.activity.SplashActivity",
15     "noReset":False}
16 # 启动appium
17 # 3 发送指令给appium driver
18 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
19 # 等待同意按钮出现
20 WebDriverWait(driver,20).until(EC.visibility_of_element_located((MobileBy.ID,'com.tal.kaoyan:id/tip_commit')))
21 # 4 元素定位方法
22 # 4.1 resourceid属性定位,返回webelement对象
23 # 点击同意
24 driver.find_element(MobileBy.ID,'com.tal.kaoyan:id/tip_commit').click()
25 # 等待我知道了弹框出现
26 WebDriverWait(driver,20).until(EC.visibility_of_element_located((MobileBy.ID,'com.tal.kaoyan:id/tv_ok')))
27 # 点击我知道了弹框
28 driver.find_element(MobileBy.ID,'com.tal.kaoyan:id/tv_ok').click()
29 # 等待元素出现
30 WebDriverWait(driver,20).until(EC.visibility_of_element_located((MobileBy.ID,'com.tal.kaoyan:id/kylogin_phone_input_code')))
31 # 输入验证码,使用ID定位
32 ele = driver.find_element(MobileBy.ID,'com.tal.kaoyan:id/kylogin_phone_input_code')
33 ele.send_keys('1111')
34 driver.quit()

2. text文本定位

text文本定位,通过调用自带框架uiautomator1/2实现元素定位,基于Java代码,使用UiSeletor类实现,提供很多方法,通过多个属性实现元素定位

单属性:driver.find_element(MobileBy.ANDROID_UIAUTOMATOR,'new UiSelector().text("请输入验证码")')
多属性:driver.find_element(MobileBy.ANDROID_UIAUTOMATOR,'new UiSelector().text("登录").resourceId("com.tal.kaoyan:id/loginCodeLoginBtn")')
 1 # 4.2 text文本定位,通过调用自带框架uiautomator1/2实现元素定位,基于Java代码
 2 # UiSeletor类实现,提供很多方法,通过多个属性实现元素定位
 3 # 输入验证码,使用文本定位
 4 ele_pwd = driver.find_element(MobileBy.ANDROID_UIAUTOMATOR,'new UiSelector().text("请输入验证码")')
 5 ele_pwd.send_keys('2222')
 6 
 7 # UiSeletor类实现,提供很多方法,通过多个属性实现元素定位
 8 ele_p = driver.find_element(MobileBy.ANDROID_UIAUTOMATOR,'new UiSelector().text("登录").resourceId("com.tal.kaoyan:id/loginCodeLoginBtn")')
10 ele_p.click()

3. description或者content-desc实现元素定位

driver.find_element(MobileBy.ACCESSIBILITY_ID,'密码 安全')

1 # 4.3  description或者content-desc实现元素定位,QQ登录
2 ele_des = driver.find_element(MobileBy.ACCESSIBILITY_ID,'密码 安全')

4. xpath定位,使用weditor中的xpath定位

driver.find_element(MobileBy.XPATH,'//*[@resource-id="com.tencent.mobileqq:id/password"]')

1 # 4.4 xpath定位,使用weditor中的xpath定位,一般不建议
2 ele_xpath = driver.find_element(MobileBy.XPATH,'//*[@resource-id="com.tencent.mobileqq:id/password"]')

 

posted @ 2022-03-23 16:49  大头~~  阅读(211)  评论(0编辑  收藏  举报