元素定位方式
-
app元素特点
- app当中属性名是固定的,所有的元素都具备这些属性
- id可以不唯一,web当中id是唯一的
- class表示组件的名称,类似于web当中tagname
-
app定位方式选择
-
id,确认唯一后可以选择
- driver.find_element(“id”,“值”)
-
content-desc 元素标识(经常没有)
- driver.find_element_by_accessibility_id(“值”)
-
uiautomator
- driver.find_element_by_android_uiautomator(“值”)
- driver.find_element(MobileBy.ANDROID_UIAUTOMATOR,“值”)
- 值要用java写,Java必须要用双引号,如果有多个字符串可以使用/转义
- selector = “new UiSelector().resourceID(“ID值”).text(“text值”)”
- 不能用and因为Java中必须要用对象表示,不能用表达式表示
- 可以进行条件组合而且比xpath更快
- 实际原理是链式调用,返回self再次调用
-
xpath(相对路径,一般用,手机解析页面速度比较慢)
- driver.find_element(xpath,“值”)
-
原生环境三种辅助定位工具
- appium inspect 每次进入都要重新创建一个会话,不方便
- uiautomatorview 最好用这个
- weditor python 终端输入weditor自动启动,不要和uiautomatorview同时使用,会冲突的
- weditor 中使用的是网易开发的一个叫uiautomator2的库,这个库本身也可以用来做自动化测试
- python automator2库
webview环境定位元素
- 注意:找开发打开webview调试模式 (app设置 setWebContensDebuggingEnabled= True)
- 点inspect没反应可能是未打开webview模式
- chorme inspect Chrome中输入:chrome://inspect(需要*)
- uc tools
原生环境切换到webview环境
- 切换上下文环境
- 切换到webview:driver.switch_to.context(context)
- 进入webview后print(driver.contexts)来获取context
- 切换到原生:driver.switch_to.context(None)
- 切换到webview:driver.switch_to.context(context)
- chromedriver路径配置
- caps中添加chromedriverExecutableDir: r"Chromedriver路径文件夹"