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"]')
本文来自博客园,作者:大头~~,转载请注明原文链接:https://www.cnblogs.com/xiaoying-guo/p/16045357.html