Appium学习笔记 - Android

安装Appium Server

使用淘宝的cnpm安装appium是最稳定快速的方法:

npm install -g cnpm --registry=https://registry.npm.taobao.org 
cnpm install -g appium

PS. -g是全局安装,安装到/usr/local/lib/node_modules, 我自己的电脑上是安装到里/usr/local/bin下

全局安装的appium只要运行appium

安装特定版本的appium:cnpm install appium@1.11 , 要运行特定版本,输入该版本的目录下的main.js来运行: ./node_modules/appium/build/lib/main.js

 

Selector Strategies

参考 https://appium.io/docs/en/commands/element/find-elements/index.html#selector-strategies

在Appium Desktop client里可以先测试定位符是否正确

# 一般用到id/xpath/accessibilityid, 不推荐class

- find_element_by_id是指resource_id(resource_id是真正的元素属性,id是appium提供的一个定位方式的名字。ios里面对应的是name属性)

- find_element_by_accessibility_id 是指content-desc (webview)

用xpath定位的时候,没有足够的属性来定位,可以用instance

//*[@text='基金']
//*[@text='基金' and @instance='4']
//*[@resource-id='com.xueqiu.android:id/buttons_container’]//*[@text='基金']
//*[contains(@resource-id, 'buttons_container’)]//*[@text='基金']

 

webview

  • 不需要css定位:直接使用accessibility-id或者xpath定位就可以直接定位到
  • 需要css定位以及其他的js执行功能:contexts api

模拟器上的测试

  • webview控件会被映射为原生控件,类型为View,其中的文本内容会变成content-desc或者text
  • 6.0会把webview中的控件变成一个带有content-desc属性的View控件
  • 9.0会把webview中的控件变成一个带有text属性的View控件

真机

  • 如果app未开启webview的调试属性,是无法分析内部的控件的
  • 个别手机可能会默认打开此属性,所以默认也能访问到h5内部的控件
  • 如果还是访问不到,检查webview的调试属性是否开启,此时需要让研发配合打开webview的调试属性

 webview调试

>>adb -s (设备udid) shell cat /proc/net/unix | grep webview

如果只有一个设备 adb shell cat /proc/net/unix grep webview

0000000000000000: 00000002 00000000 00010000 0001 01 2545836 @webview_devtools_remote_32073
0000000000000000: 00000002 00000000 00010000 0001 01 9455057 @webview_devtools_remote_25324

  • 看哪个进程开了webview组件

>>adb -s (设备udid) shell ps 32073 25324

  • 重定向

>>adb -s (设备udid) forward tcp:7777 localabstract:webview_devtools_remote_32073

>>adb forward --list

>>curl http://127.0.0.1:7777/json/version

{
   "Android-Package": "com.xueqiu.android",
   "Browser": "Chrome/69.0.3497.100",
   "Protocol-Version": "1.3",
   "User-Agent": "Mozilla/5.0 (Linux; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.031; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36",
   "V8-Version": "6.9.427.23",
   "WebKit-Version": "537.36 (@8920e690dd011895672947112477d10d5c8afb09)",
   "webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/browser"
}

>>http://127.0.0.1:9222/json/list

[ {
   "description": "{\"attached\":true,\"empty\":false,\"height\":2540,\"screenX\":0,\"screenY\":252,\"visible\":true,\"width\":1440}",
   "devtoolsFrontendUrl": "http://chrome-devtools-frontend.appspot.com/serve_rev/@8920e690dd011895672947112477d10d5c8afb09/inspector.html?ws=127.0.0.1:7777/devtools/page/F960D549EC118B7A5A86D94B82DDEBDC",
   "id": "F960D549EC118B7A5A86D94B82DDEBDC",
   "title": "平安证券 极速开户",
   "type": "page",
   "url": "https://broker.xueqiu.com/open/pazq-v4?snb_from=tab&undefined",
   "webSocketDebuggerUrl": "ws://127.0.0.1:7777/devtools/page/F960D549EC118B7A5A86D94B82DDEBDC"
}, {
   "description": "{\"attached\":true,\"empty\":false,\"height\":2371,\"screenX\":0,\"screenY\":253,\"visible\":true,\"width\":1440}",
   "devtoolsFrontendUrl": "http://chrome-devtools-frontend.appspot.com/serve_rev/@8920e690dd011895672947112477d10d5c8afb09/inspector.html?ws=127.0.0.1:7777/devtools/page/9AA8CBCF929D7B79A426E55958F49285",
   "id": "9AA8CBCF929D7B79A426E55958F49285",
   "title": "实盘交易",
   "type": "page",
   "url": "file:///data/user/0/com.xueqiu.android/files/com.xueqiu.android.h5/modules/broker/tradeHome.html",
   "webSocketDebuggerUrl": "ws://127.0.0.1:7777/devtools/page/9AA8CBCF929D7B79A426E55958F49285"
} ]
  • 使用Chrome62调试android webview,打开chrome://inspect/#devices,点击inspect。可与你分析元素定位,分析网络性能

>>adb forward --remove-all

 

有些时候设备连接久了,找不到连接的设备或者模拟器,使用adb kill -server,在adb devices查找,就可以找到

清理数据:adb shell pm clear com.xueqiu.android

 

from 赫格沃兹-思寒

转载于:https://www.cnblogs.com/lvt16/p/11134362.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值