Appium学习(三)--3种等待、AppiumGUI、模拟键盘输入

等待元素

等待元素加载有三种办法:

第一种:强制等待

  • 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图形化界面


image.png

如果在代码中执行自动化测试,需要提前点击小三角符号把appium服务启动起来:


image.png

也可以先停止appium服务,在appium GUI界面设置设备和启动app的包名、启动项,来启动app:


image.png

image.png

点击小三角符号就能启动设备中的app:


image.png

image.png

appium GUI运行inspector

在uiautomator viewer中定位不了,可以通过在inspector中定位。
首先要设置Android参数:


image.png

Application path 是apk安装文件所在的路径,选择路径之后,下面的package、Lanuch Activity会自动加载进来,按着图中所示都勾选上。
勾选如下图3个选项:


image.png

点击启动符号,启动appium,会自动安装app。
然后再点击搜索符号:
image.png

如果没有内容就点击刷新按钮:


image.png

模拟键盘输入:

appium执行时会调起键盘,键盘上的信息无法定位到id或class,只能通过猜测坐标去点击, 比如下图中w的坐标猜测可能是150,1200


image.png

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容