APP自动化(java和python)——参考——appium参考——操作方法参考——转载

转载:https://www.jianshu.com/p/b41d63f92b0d

 

下面是一些Python脚本中操作app的用法:

检查app安装情况(返回true/false), driver.is_app_installed(package_name)

安装app driver.install_app("x:/xxx.apk")

卸载app driver.remove_app(package_name)

打开通知栏 driver.open_notifications()

关闭app driver.close_app()

启动app driver.launch_app()

锁定屏幕x秒(不是很好用,锁定后屏幕无法解锁,导致无法后续,本人未找到解锁的方法) driver.lock(X)

模拟摇晃设备 driver.shake

重置应用 driver.resetApp()

检查是否存在某个activity(未找到则返回异常) driver.find_element_by_id(activity)

获取当前的activity: activity = self.driver.current_activity print(u"当前的activity是:", activity)

等待activity启动直到x秒超时,每隔y秒扫描一次 driver.wait_activity(activity, x, y)

将app置于后台运行x s(注意:测试发现置于后台数秒后变为前台时,将是重新启动app,进入首页,而不是切入后台时的界面) driver.background_app(x)

打印可用的输入法 IME_LISE = driver.available_ime_engines print(IME_LISE)

检查设备是否有输入法服务活动,返回True/False driver.is_ime_active()

激活安卓设备中的指定输入法(设备可用输入法可以从“available_ime_engines”获取)") driver.activate_ime_engine(IME_LISE[-1])

退出键盘 driver.hide_keyboard()

 

 

 

Appium 客户端的操作

**锁定解锁屏幕 **
driver.lock(5)

 


将把当前应用放到后台 5 秒
driver.background_app(5)

 


收起键盘 
driver.hide_keyboard()

 


启动 ACTIVITY
在当前应用中打开一个 activity 或者启动一个新应用并打开一个 activity 。 只能在 Android 上使用
driver.start_activity('com.example.android.apis', '.Foo')

 


打开下拉通知栏 只能在 Android 上使用
driver.open_notifications()

 

 

检查应用是否已经安装 
driver.is_app_installed('com.example.android.apis')

 

 


安装应用
driver.install_app('path/to/my.apk')

 

 


删除应用 
driver.remove_app('com.example.android.apis')

 

 

 

摇晃 (SHAKE) 
driver.shake()

 

 


关闭应用 
driver.close_app()

 

 

启动 (LAUNCH)
根据服务关键字 (desired capabilities) 启动会话 (session) 。请注意这必须在设定 autoLaunch=false 关键字时才能生效。

这不是用于启动指定的 app/activities ————你可以使用 start_activity 做到这个效果

————这是用来继续进行使用了 autoLaunch=false 关键字时的初始化 (Launch) 流程的


driver.launch_app()

 

 

 

应用重置(相当于卸载重装应用) 
driver.reset()

 

 


列出所有的可用上下文 (CONTEXT)
context 可以理解为 可进入的窗口 。例如,对于原生应用,可用的 context 和默认 context 均为 NATIVE_APP
driver.contexts

 


列出当前上下文 
driver.current_context

 

 

获取当前页面的源码(可以辅助元素定位) 
driver.page_source

 


截图屏幕图片 
driver.get_screenshot_as_file(r'E:\img\img1.png') # 截取整个屏幕

 

 

获取应用程序的字符串 (APP STRINGS)
driver.app_strings

 

 

给设备发送一个按键事件(KEY EVENT)(只限安卓)
driver.keyevent(176)


键盘事件的key 码 https://developer.android.com/reference/android/view/KeyEvent.html

获取当前 activity。只能在 Android 上使用
driver.current_activity

 

 

模拟用户滑动(SWIPE)
driver.swipe(start=75, starty=500, endx=75, endy=0, duration=800)

 

 

捏屏幕(PINCH) (双指往内移动来缩小屏幕)
driver.pinch(element=el)

 

 

放大 (ZOOM)屏幕 (双指往外移动来放大屏幕)
driver.zoom(element=el)

 

 

滑动 (SCROLL)到某个元素。从一个元素滚动到另一个元素 
driver.scroll(originalEl, destinationEl ) # originalEl - 要滚动的元素 destinationEl - 要滚动到的元素

 

 

 

设置元素的值 
driver.set_value(element=el,Val) # 设置 el 元素的值

 

 

 

推送文件到设备中去(PUSH FILE),推送文件需要转换为'base64'

data = "some data for the file" 
path = "/data/local/tmp/file.txt"
driver.push_file(path, data.encode('base64'))

获取/设置 appium 的服务器设置。 

current_settings = driver.get_settings()
driver.update_settings({"someSetting": True})




多个点点击(最多五个点) 
driver.tap([(100, 20), (100, 60), (100,100)], 500) # list 中的元组放 5 个点,500 表示按下 500ms

 
 
#在控件上执行press 按操作。
press(WebElement el)


#在坐标为(x,y)的点执行press 操作 press(int x, int y)


#在控件el 的左上角的x 坐标偏移x 单位,y左边偏移y 单位的坐标上执行press 操作。 press(WebElement el, int x, int y)


#释放操作,代表该系列动作的一个结束标志。 release()

#以el 为目标,从另一个点移动到该目标上 moveTo(WebElement el)


#以 (x,y) 点 为 目 标 , 从 另 一 个 点 移 动 到 该 目 标 上 moveTo(intx,inty)


# 以控件el 的左上角为基准,x 轴向右移动x 单位,y 轴向下移动y 单位。以该点为目标,从另一个点移动到该点上。 moveTo(WebElement el, int x, int y)


# 在控件的中心点上敲击一下 tap(WebElement el)


#在(x,y)点轻击一下 tap(int x, int y)


#以控件el 的左上角为基准,x轴向右移动x 单位,y轴向下移动y 单位。在该点上轻击。 tap(WebElement el, int x, int y)


#代表一个空操作,等待一段时间 waitAction()


#等待ms 秒 waitAction(int ms)


#控件长按 longPress(WebElement el)


#点 长 按 longPress(intx,inty)

#偏移点长按 longPress(WebElement el, int x, int y)


#取消执行该动作 cancel()


#执行该动作 perform()



 

posted @ 2020-06-26 13:26  小白龙白龙马  阅读(439)  评论(0编辑  收藏  举报