UI自动化 Appium常用的方法汇总(java版)

本文主要介绍了Appium的常用接口和高级手势。常用接口包括定位元素、等待、元素操作、滑动与拖拽事件等,详细说明了不同定位方式及等待方法的区别。高级手势如轻敲、按下和抬起、长按等,还提及了获取手机分辨率、截图、设置网络及通知栏操作等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Appium

常用接口

定位一个元素
  • 通过id定位

    driver.find_element_by_id()
    
  • 通过className

    driver.find_element_class_name()
    
  • 通过xpath

    driver.find_element_by_xpath()
    
定位一组元素
  • 通过id定位

    driver.find_elements_by_id()
    
  • 通过className

    driver.find_elements_class_name()
    
  • 通过xpath

    driver.find_elements_by_xpath()
    
等待
  • 隐式等待

    所有的find操作都会等待

    driver.implicitly_wait(10) # 10秒
    
  • 显示等待

    针对当前绑定的用户的等待,在5s内,每0.5s调用一次查找元素

    wait = WebDriverWait(driver, 5) # 5s
    button = wait.until(lambda xx.find_element_by_xpath(""))
    
对比
  • 作用域

    显示等待单个元素,隐式等待全局元素

  • 方法

    显示等待在WebDriverWait类中,而隐式等待则直接通过driver实例化对象调用

  • sleep

    固定写死时间,不推荐

  • 报错

    显示等待未找到报错TimeOutException,隐式等待报错NoSuchElementException

元素操作
  • 点击

    element.click()
    
  • 清空文本框元素

    element.clear()
    
  • 输入内容

    element.send_keys()
    
  • 获取文本内容

    element.text()
    
  • 位置&大小

    element.location #{'x':12, 'y': 12}
    element.size # {'height':192, 'width': 192}
    
  • 获取元素属性值

    key=“text” 返回text属性值

    key="name"返回content-desc/text属性值

    key="className"返回class属性,只有API>=18支持

    key="resourceId"返回resource-id属性值,只有API>=18支持

    element.get_attribute("key")
    
滑动与拖拽事件
  • swipe滑动事件

    有距离误差,时间越短惯性越小

    driver.swipe(start_x, start_y, end_x, end_y, duration) #持续时间 默认为0 ms
    
  • scroll滑动

    从一个元素滑动到另一个元素,直到页面自动停止,有惯性

    driver.scroll(element1, element2)
    
  • drag_and_drop拖拽事件

    从一个元素滑动到另一个元素,第二个元素代替第一个元素原本屏幕上的位置,没有惯性

    driver.drag_and_drop(element1, element2)
    

高级手势TouchAction

轻敲

要么传element,要么传X,Y坐标,count是执行次数,单击(1),双击(2)

TouchAction(driver).tap(element=None, x=None, y=None, count=1).perform() 

按下和抬起
  • 按下

    pressure是ios的强制按下

    TouchAction(driver)
    .press(el=None, x=None, y=None, pressure=float)
    .wait(2000)
    .perform() 
    
    
  • 抬起

    TouchAction(driver)
    .release()
    .perform() 
    
    
  • 长按

    TouchAction(driver)
    .long_press(el=None, x=None, y=None, duration=1000)
    .perform() 
    
    
长按
TouchAction(driver)
.move_to(el=None, x=None, y=None)
.perform() 

获取手机分辨率
driver.get_window_size() #{'height':2560, 'width':1440}

截图
dirver.get_screenshot_as_file("fileName.png")

获取&设置手机网络
  • 获取网络

    driver.network_connection
    
    
  • 设置网络

    valueDataWIFIAirplane Mode
    0000
    1001
    2010
    4100
    6110
    driver.set_network_connection()
    
    
    按键操作
KEYCODE_UNKNOWN=0;KEYCODE_DPAD_CENTER=23;KEYCODE_R=46;KEYCODE_MINUS=69;
KEYCODE_SOFT_LEFT=1;KEYCODE_VOLUME_UP=24;KEYCODE_S=47;KEYCODE_EQUALS=70;
KEYCODE_SOFT_RIGHT=2;KEYCODE_VOLUME_DOWN=25;KEYCODE_T=48;KEYCODE_LEFT_BRACKET=71;
KEYCODE_HOME=3;KEYCODE_POWER=26;KEYCODE_U=49;KEYCODE_RIGHT_BRACKET=72;
KEYCODE_BACK=4;KEYCODE_CAMERA=27;KEYCODE_V=50;KEYCODE_BACKSLASH=73;
KEYCODE_CALL=5;KEYCODE_CLEAR=28;KEYCODE_W=51;KEYCODE_SEMICOLON=74;
KEYCODE_ENDCALL=6;KEYCODE_A=29;KEYCODE_X=52;KEYCODE_APOSTROPHE=75;
KEYCODE_0=7;KEYCODE_B=30;KEYCODE_Y=53;KEYCODE_SLASH=76;
KEYCODE_1=8;KEYCODE_C=31;KEYCODE_Z=54;KEYCODE_AT=77;
KEYCODE_2=9;KEYCODE_D=32;KEYCODE_COMMA=55;KEYCODE_NUM=78;
KEYCODE_3=10;KEYCODE_E=33;KEYCODE_PERIOD=56;KEYCODE_HEADSETHOOK=79;
KEYCODE_4=11;KEYCODE_F=34;KEYCODE_ALT_LEFT=57;KEYCODE_FOCUS=80;//Camerafocus
KEYCODE_5=12;KEYCODE_G=35;KEYCODE_ALT_RIGHT=58;KEYCODE_PLUS=81;
KEYCODE_6=13;KEYCODE_H=36;KEYCODE_SHIFT_LEFT=59;KEYCODE_MENU=82;
KEYCODE_7=14;KEYCODE_I=37;KEYCODE_SHIFT_RIGHT=60;KEYCODE_NOTIFICATION=83;
KEYCODE_8=15;KEYCODE_J=38;KEYCODE_TAB=61;KEYCODE_SEARCH=84;
KEYCODE_9=16;KEYCODE_K=39;KEYCODE_SPACE=62;KEYCODE_MEDIA_PLAY_PAUSE=85;
KEYCODE_STAR=17;KEYCODE_L=40;KEYCODE_SYM=63;KEYCODE_MEDIA_STOP=86;
KEYCODE_POUND=18;KEYCODE_M=41;KEYCODE_EXPLORER=64;KEYCODE_MEDIA_NEXT=87;
KEYCODE_DPAD_UP=19;KEYCODE_N=42;KEYCODE_ENVELOPE=65;KEYCODE_MEDIA_PREVIOUS=88;
KEYCODE_DPAD_DOWN=20;KEYCODE_O=43;KEYCODE_ENTER=66;KEYCODE_MEDIA_REWIND=89;
KEYCODE_DPAD_LEFT=21;KEYCODE_P=44;KEYCODE_DEL=67;KEYCODE_MEDIA_FAST_FORWARD=90;
KEYCODE_DPAD_RIGHT=22;KEYCODE_Q=45;KEYCODE_GRAVE=68;KEYCODE_MUTE=91;
driver.press_keycode()

通知栏

只有开,没有关

要关闭的方法

  1. 滑动操作
  2. 按返回键 key=4
driver.open_notifications()

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BugGuys

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值