UIAutomator定位简介
2022-01-26 本文已影响0人
Chaweys
使用方法 find_element_by_android_uiautomator() 可以运用UiAutomator元素定位
1、id定位:
id定位是根据元素的resource-id属性来进行定位,使用 UiSelector().resourceId()方法
# 用户名输入框清除:通过id
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.tal.kaoyan:id/login_email_edittext")').clear()
# 用户名输入框输入账户:通过id
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.tal.kaoyan:id/login_email_edittext")').send_keys("zxw123")
2、text定位:
text定位就是根据元素的text属性值来进行定位,使用 new UiSelector().text()方法
# 用户名输入框清除:通过text
driver.find_element_by_android_uiautomator('new UiSelector().text("请输入用户名")').clear()
# 用户名输入框输入账户:通过text
driver.find_element_by_android_uiautomator('new UiSelector().text("请输入用户名")').send_keys("zxw123")
3、class name定位:
与Appium class定位方式一样,也是根据元素的class属性来进行定位,使用new UiSelector().className()方法
# 用户名输入框清除:通过class_name
driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.EditText")').clear()
# 用户名输入框输入账户:通过class_name
driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.EditText")').send_keys("zxw123")
举例:
# -*-coding:utf-8 -*-
# @Author : hudechao
# @Time : 2022/1/20 2:07
from AppiumTest import findElement
"""
等录kyb:
1、检测是否第一次登录,
2、是第一次登录,调直接登录方法,
3、不是第一次登录,点击"我"-"未登录"-调用直接登录方法
"""
driver = findElement.driver()
def login():
# 用户名输入框清除:通过id
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.tal.kaoyan:id/login_email_edittext")').clear()
# 用户名输入框输入账户:通过id
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.tal.kaoyan:id/login_email_edittext")').send_keys("zxw123")
# # 用户名输入框清除:通过text
# driver.find_element_by_android_uiautomator('new UiSelector().text("请输入用户名")').clear()
# # 用户名输入框输入账户:通过text
# driver.find_element_by_android_uiautomator('new UiSelector().text("请输入用户名")').send_keys("zxw123")
# # 用户名输入框清除:通过class_name
# driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.EditText")').clear()
# # 用户名输入框输入账户:通过class_name
# driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.EditText")').send_keys("zxw123")
# 密码输入框输入密码
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.tal.kaoyan:id/login_password_edittext")').send_keys("zxw123")
# 点击登录按钮
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.tal.kaoyan:id/login_login_btn")').click()
def checkCancelButton():
try:
# 如果是首次安装运行,会有升级提示
cancelButton = driver.find_element_by_id("android:id/button2")
except Exception as e:
print("cancelButton is not exist")
else:
cancelButton.click()
print("点击取消按钮")
def checkSkipButton():
try:
# 升级提示后的跳过按钮
skipButton = driver.find_element_by_id("com.tal.kaoyan:id/tv_skip")
except Exception as e:
print("skipButton is not exist")
else:
skipButton.click()
print("点击跳过按钮")
try:
# 检查是否已经登录过,如果登录过,"我"按钮元素存在
driver.find_element_by_id("com.tal.kaoyan:id/mainactivity_button_mysefl")
except Exception as e:
print("首次登录")
checkCancelButton()
checkSkipButton()
login()
else:
driver.find_element_by_id("com.tal.kaoyan:id/mainactivity_button_mysefl").click()
driver.find_element_by_id("com.tal.kaoyan:id/activity_usercenter_username").click()
print("再次登录")
login()