等待元素
等待元素加载有三种办法:
第一种:强制等待
- sleep
Thread.sleep(60000)
用在执行查找元素之前强制等待60s
第二种:隐式等待,全局等待,写在setup的初始化方法中,每次查找元素时最长等待30s,在30s内找到元素就接着执行
- implicitlyWait
隐式等待,全局等待30s,在30s内找到元素就接着执行
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
第3种:显示等待,一般和util配合使用,在规定的超时等待时间中元素出现就行,如果不出现就会报错。
- WebDriverWait 显示等待,这个需要增加一定等待时间,显示等待时间可以通过WebDriverWait 和util来决定,比如这个timeOut是2s,在2s内不停的找这个元素超过2s找不到就报错了。
new WebDriverWait(androidDriver,2000).until(ExpectedConditions.presenceOfElementLocated(by));
封装了一个方法:
//等待某个元素出现,等待时间为1秒
public void waitforelementpresent(By by){
try{
new WebDriverWait(androidDriver,1000).until(ExpectedConditions.presenceOfElementLocated(by));
}catch (Exception e){
e.printStackTrace();
}
}
注:测试中强制等待和显示等待配合着使用,这样就不会出现浪费时间的问题。
appium GUI
因用的是windows所以只能测试安卓手机,ios需要用mac测试
appium GUI 是下载AppiumForWindows-1.3.4.1.zip直接打开appium.exe就可以进入appiumGUI图形化界面
如果在代码中执行自动化测试,需要提前点击小三角符号把appium服务启动起来:
也可以先停止appium服务,在appium GUI界面设置设备和启动app的包名、启动项,来启动app:
点击小三角符号就能启动设备中的app:
appium GUI运行inspector
在uiautomator viewer中定位不了,可以通过在inspector中定位。
首先要设置Android参数:
Application path 是apk安装文件所在的路径,选择路径之后,下面的package、Lanuch Activity会自动加载进来,按着图中所示都勾选上。
勾选如下图3个选项:
点击启动符号,启动appium,会自动安装app。
然后再点击搜索符号:
如果没有内容就点击刷新按钮:
模拟键盘输入:
appium执行时会调起键盘,键盘上的信息无法定位到id或class,只能通过猜测坐标去点击, 比如下图中w的坐标猜测可能是150,1200
driver.tap(1,150,1200,1);
就能代码点击键盘上的w键去输入。
注意:要打开键盘时setup方法中的如下两行代码要注释掉:
//使用Unicode编码方式发送字符串
//capabilities.setCapability("unicodeKeyboard","True");
//隐藏键盘 ,这样才能输入中文
//capabilities.setCapability("resetKeyboard","True");
模拟Android key的输入:
代码就一句话:
driver.sendKeyEvent(54); //54代表keycode的值。
也可以写成:
driver.sendKeyEvent(AndroidKeyCode.BACK); //模拟返回键
跟上面讲到的键盘设置没有关系,只是Android自带的key
下面提供Android keycode参考表:
电话键
KEYCODE_CALL 拨号键 5
KEYCODE_ENDCALL 挂机键 6
KEYCODE_HOME 按键Home 3
KEYCODE_MENU 菜单键 82
KEYCODE_BACK 返回键 4
KEYCODE_SEARCH 搜索键 84
KEYCODE_CAMERA 拍照键 27
KEYCODE_FOCUS 拍照对焦键 80
KEYCODE_POWER 电源键 26
KEYCODE_NOTIFICATION 通知键 83
KEYCODE_MUTE 话筒静音键 91
KEYCODE_VOLUME_MUTE 扬声器静音键 164
KEYCODE_VOLUME_UP 音量增加键 24
KEYCODE_VOLUME_DOWN 音量减小键 25
控制键
KEYCODE_ENTER 回车键 66
KEYCODE_ESCAPE ESC键 111
KEYCODE_DPAD_CENTER 导航键 确定键 23
KEYCODE_DPAD_UP 导航键 向上 19
KEYCODE_DPAD_DOWN 导航键 向下 20
KEYCODE_DPAD_LEFT 导航键 向左 21
KEYCODE_DPAD_RIGHT 导航键 向右 22
KEYCODE_MOVE_HOME 光标移动到开始键 122
KEYCODE_MOVE_END 光标移动到末尾键 123
KEYCODE_PAGE_UP 向上翻页键 92
KEYCODE_PAGE_DOWN 向下翻页键 93
KEYCODE_DEL 退格键 67
KEYCODE_FORWARD_DEL 删除键 112
KEYCODE_INSERT 插入键 124
KEYCODE_TAB Tab键 61
KEYCODE_NUM_LOCK 小键盘锁 143
KEYCODE_CAPS_LOCK 大写锁定键 115
KEYCODE_BREAK Break/Pause键 121
KEYCODE_SCROLL_LOCK 滚动锁定键 116
KEYCODE_ZOOM_IN 放大键 168
KEYCODE_ZOOM_OUT 缩小键 169
组合键
KEYCODE_ALT_LEFT Alt+Left
KEYCODE_ALT_RIGHT Alt+Right
KEYCODE_CTRL_LEFT Control+Left
KEYCODE_CTRL_RIGHT Control+Right
KEYCODE_SHIFT_LEFT Shift+Left
KEYCODE_SHIFT_RIGHT Shift+Right
基本
KEYCODE_0 按键’0’ 7
KEYCODE_1 按键’1’ 8
KEYCODE_2 按键’2’ 9
KEYCODE_3 按键’3’ 10
KEYCODE_4 按键’4’ 11
KEYCODE_5 按键’5’ 12
KEYCODE_6 按键’6’ 13
KEYCODE_7 按键’7’ 14
KEYCODE_8 按键’8’ 15
KEYCODE_9 按键’9’ 16
KEYCODE_A 按键’A’ 29
KEYCODE_B 按键’B’ 30
KEYCODE_C 按键’C’ 31
KEYCODE_D 按键’D’ 32
KEYCODE_E 按键’E’ 33
KEYCODE_F 按键’F’ 34
KEYCODE_G 按键’G’ 35
KEYCODE_H 按键’H’ 36
KEYCODE_I 按键’I’ 37
KEYCODE_J 按键’J’ 38
KEYCODE_K 按键’K’ 39
KEYCODE_L 按键’L’ 40
KEYCODE_M 按键’M’ 41
KEYCODE_N 按键’N’ 42
KEYCODE_O 按键’O’ 43
KEYCODE_P 按键’P’ 44
KEYCODE_Q 按键’Q’ 45
KEYCODE_R 按键’R’ 46
KEYCODE_S 按键’S’ 47
KEYCODE_T 按键’T’ 48
KEYCODE_U 按键’U’ 49
KEYCODE_V 按键’V’ 50
KEYCODE_W 按键’W’ 51
KEYCODE_X 按键’X’ 52
KEYCODE_Y 按键’Y’ 53
KEYCODE_Z 按键’Z’ 54