一。appuim 元素定位辅助工具
1)启动
点击搜索按钮,等待
等待完毕:
启动会话:
页面页面介绍:
2)元素定位:
-搜索
搜索结果:
补充:
1.selenium中
webdriver.Chrome()运行原理:
-先启动一个服务端,再启动一个客户端 使用客户端给服务端发送请求
-start
-运行Chromedriver服务
-ChromeRemoteConnection 远程连接:
-向远程服务器发送命令。
2.appium
-服务端是appuim
-客户端也是初始化一个
-
-selenium与appium公用一个类:WebDriver
-selenium,只是使用了 Chrome()子类
-appium则使用了 Remote() 子类
3.MobileBy:继承了selenium中的By,自动有封装了一部分方法 与selenium相比定位方式少了些:比如 :css定位
二。元素定位
1.与selenium相比appium
-app 当中属性名是固定的,所有的元素都具备这些属性,
-id, class, content-desc, clickable, checkable, 都在辅助工具会显示的。
-id 可以不唯一, web 当中 id 是唯一
-app中class 是表示组件的名称,类似于 web 当中 tagname
-app 自动化测试当中,很少用单独的 class 定位
2.app中常用元素定位方式
- id, 确认什么时候唯一, inpect 查找元素。
- content-desc 元素标识, 经常没有。
- uiautomator 原生定位方式
- xpath (相对路径,一般用。手机解析页面素速度比较慢)
3.元素定位:
from appium import webdriver
caps={
"platformName": "Android",#平台名称
"deviceName": "emulator-5554",#设备名字
"appPackage":"包名",
"appActivity":"页面",
}
driver = webdriver.Remote(
command_executor='http://127.0.0.1:4723/wd/hub',
desired_capabilities=caps,
)
-方式一:
# 通过 ID
# el = driver.find_element("id", "值")
# el.click()
-方式二:
# 通过 content-desc 属性查找
# el = driver.find_element_by_accessibility_id("值")
-方式三:uiautomator
-单个元素操作
# 值,value: Java 代码
# TODO: Java 代码表示字符串是用双引号,单引号不行,
# TODO:若有多个引号,可以在里面的引号之前打
selector = 'new UiSelector().resourceId("id值")'
el = driver.find_element_by_android_uiautomator(selector)
#另外一种调用方法
# # el = driver.find_element(MobileBy.ANDROID_UIAUTOMATOR, "")
el.click()
-组合元素操作
参考地址:https://www.cnblogs.com/jianXu/p/5158396.html
# 和xpath 一样,可以进行条件的组合。
# 组合查询比 xpath 更快
# new UiSelector().resourceId("组合值1").text("组合值2") #等等通过链式调用生效
# new UiSelector().resourceId())
-父子元素
# 父元素, (子元素) ==》 通过子元素的特征找到父元素
# new UiSelector().checkable(false).childSelector(
# new UiSelector().checkable()
# )
-方式四:xpath
# el = driver.find_element(MobileBy.XPATH, "")
time.sleep(2)
driver.quit()
4.元素定位其他辅助工具
uiautomatorviewer: android 调试工具 手动刷新
weditor #网易的工具 优点:xpath 是相对路径;鼠标可显示
三。等待
元素等待
强制
隐式等待
显示等待