appiu 笔记
1.要在手机上输入字符, 要屏蔽手机键盘
于是可以想办法屏蔽软键盘,只需在desired_caps{}设置里面加两个参数
unicodeKeyboard是使用unicode编码方式发送字符串
resetKeyboard是将键盘隐藏起来
后记:
这里是参考上海悠悠的教程,如果 输入的是中文 记得上面加上u,如果 手机输出后的字符乱码,则在头部加上 #--coding:gb18030--
2.查看包名的方法:
在sdk的 build-tools 里有个aapt
使用命令
aapt dump badging D:\test\xxx.apk(APK 的全名, 如手机淘宝.apk)
![](https://images2018.cnblogs.com/blog/1226993/201804/1226993-20180418114545383-1700625953.png)
这里就可以看到 apk 的包名:com.taobao.taobao
继续滑动往下看
淘宝的 launcherActivity 值为 com.taobao.tao.welcome.Welcome
方法二:
查看data/data文件夹下的应用程序包。注:我们能测试的应用程序包都在这个目录下面
C:\Documents and Settings\Administrator>adb shell
ls data/data
方法三: 通过pm命令查看。
adb shell
>pm list package
方法四:
可以在手机上打开 app,windows 系统用 findstr 过滤,cmd 输入
adb shell dumpsys window | findstr mCurrentFocus
返回
C:\Users\dell>adb shell dumpsys window | findstr mCurrentFocus
mCurrentFocus=Window{6aff6e2 u0 com.netease.edu.study/com.netease.edu.study.main.activity.ActivityMain}
于是可以查到包名:com.netease.edu.study
当前正在启动的activity名称:com.netease.edu.study.main.activity.ActivityMain
方法五
安装tidevice库
pip install tidevice
tidevice list 查看已连接设备
tidevice applisttidevice applist 查看设备上的第三方应用包名
# $UDID可以使用tidevice list命令查看
tidevice -u $UDID install D:/test.ipa
# 或者
tidevice -u $UDID install https://example.org/example.ipa
更多详细的功能可以查看 tidevice 的github文档:https://github.com/alibaba/taobao-iphone-device 。
查看启动activity
appium自动化的时候,需获取启动名 launcherActivity
。在手机上安装app、打开app出现启动页的时候,在cmd中输入
adb shell dumpsys activity activities | findstr "Run"
于是可以看到带‘main’的就是启动名 launcherActivity
C:\Users\dell>adb shell dumpsys activity activities | findstr "Run"
Running activities (most recent first):
Run #1: ActivityRecord{3f3d520 u0 com.netease.edu.study/.login.activity.ActivityLogin t9}
Run #0: ActivityRecord{c414171 u0 com.netease.edu.study/.main.activity.ActivityMain t9}
Running activities (most recent first):
Run #0: ActivityRecord{98a9c2c u0 com.android.launcher3/.Launcher t2}
查看到启动名:com.netease.edu.study.main.activity.ActivityMain
3.显示等待,结合android_uiautomator定位 判断文本有没出现
input_ = dr.find_element_by_android_uiautomator('textContains(\"Log\")')
element = WebDriverWait(dr,5,0.5).until( lambda dr : input_.is_displayed())
element 返回的是 Ture or False
# # 校验登录按钮
# element = WebDriverWait(dr,5,0.5).until(EC.presence_of_element_located((By.XPATH,"//android.widget.TextView[@text='Login']")))
4.adb 点击元素 / 和输入text 的方法
import os
os.system(“adb shell input tap 200 300”)
os.system(“adb shell input text”)
其他adb命令模拟按键参考: https://www.cnblogs.com/yoyoketang/p/8988203.html