Appium常用Api实操
本文是基于python语言在android上实操的,仅记录(忽略排版~~~)
会不时更新的:
from appium import webdriver
from selenium.webdriver.common.touch_actions import TouchActions #导入TouchActions类
import time caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "8.0.0"
caps["deviceName"] = "Phone"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = ".Settings" driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) time.sleep(1)
driver.find_element_by_xpath("//android.widget.TextView[@text='Network & Internet']").click()
print(driver.available_ime_engines) #返回安卓设备可用的输入法
driver.open_notifications() #打系统通知栏
time.sleep(2)
driver.press_keycode(4) #点击返回键关闭通知栏
driver.save_screenshot("new.png") #截取当前屏幕并命名new.png,然后保存到电脑脚本当前目录 '''driver.find_element_by_xpath("//android.widget.TextView[@text='Display']").click() #使用xpath方法定位
m = driver.find_element_by_xpath("//android.widget.TextView[@text='Adaptive brightness']")
print(m.get_attribute("className")) #获取元素m的className值 '''
'''
e = driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.SeekBar")') #使用uiautomator搭配class属性方法定位 控制条
ex = e.location.get('x') #获取元素初始横坐标
ey = e.location.get('y') #获取元素初始纵坐标
#driver.tap([(ex,ey)],500) #用tap方法点击拖动按钮的最左侧起始位置
#driver.tap([(ex+400,ey)],500) #用tap方法横向点击某按钮,ex+400,ey不变
driver.swipe(ex,ey,ex+400,ey,500) #用swipe方法横向拖动某按钮, ey纵坐标不变
time.sleep(1)
driver.press_keycode(4) #按导航返回键''' #driver.find_element_by_xpath("//android.widget.TextView[@text='Network & Internet']") '''k = driver.find_element_by_xpath("//android.widget.TextView[@text='Network & Internet']") #定位元素Network & Internet,通过xpath方式
kx = k.location.get('x') #获取元素的x坐标
ky = k.location.get('y') #获取元素的y坐标
driver.tap([(kx,ky)],5000) #长按元素坐标5s
time.sleep(2)
driver.install_app('F:\\soft\\weixin.apk') #安装app,后接apk路径
#driver.remove_app("com.tencent.mm") #删除app(包名)
driver.press_keycode('4') #按返回键
#driver.keyevent('3') #按home键
time.sleep(2)''' '''
driver.find_element_by_accessibility_id("Search settings").click() #定位并点击click()
#driver.find_element_by_id("android:id/search_src_text").send_keys('wifi') #定位到搜索输入栏,用.send_keys()方法模拟输入文本
#driver.find_element_by_id("android:id/search_src_text") #定位到搜索输入栏
driver.press_keycode(42) #模拟点击键盘上的n
driver.press_keycode(34) #模拟点击键盘上的f
driver.press_keycode(31) #模拟点击键盘上的c
time.sleep(1)
driver.find_element_by_accessibility_id("Clear query").click() #清除文本,用.clear()方法来清除输入文本 通过id方式定位
driver.find_element_by_accessibility_id("Navigate up").click() #点击返回键'''
'''
k = driver.find_element_by_xpath("//android.widget.TextView[@text='Network & Internet']") #定位元素并附值给k
print(k.size) #获取K元素的size,包括height, width
print(driver.get_window_size()) #打印屏幕分辨率
'''
'''time.sleep(2) #强制等待2s
x = driver.get_window_size()['width'] #获取屏幕的宽度
y = driver.get_window_size()['height'] #获取屏幕的高度
driver.swipe(1/2*x, 5/7*y, 1/2*x, 2/7*y, 1000) #从下往上滑动屏幕(5/7->2/7) time.sleep(2) driver.close_app() #关闭app
time.sleep(2)
driver.launch_app() #启动app
time.sleep(2)
driver.get_screenshot_as_file('G:\\Kemi\\pic.png') #截取当前屏幕并命名pic.png,然后保存到电脑G:\Kemi下
driver.save_screenshot("newContact.png") #截取当前屏幕并命名pic.png,然后保存到电脑当前目录下''' time.sleep(2) #driver.is_app_installed("com.android.settings") #检查app是否安装
#driver.find_element_by_xpath("//android.widget.TextView[@text='Brightness level']").is_displayed() # 定位元素并判断是否显示
#driver.find_element_by_xpath("//android.widget.TextView[@text='Brightness level']").is_enabled() #判断是否可用 #self.driver.find_element_by_android_uiautomator('new UiSelector().text("Long")').click() #使用uiautomator搭配text属性方法定位 弹框选项 x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
driver.swipe(1/2*x, 6/7*y, 1/2*x, 1/7*y, 1000) #从下往上滑动屏幕
time.sleep(1)
driver.find_element_by_xpath("//android.widget.TextView[@text='Support']").click()
try: #使用try-except判断是否有弹窗,没有就pass跳过势将执行后面的操作
driver.find_element_by_id("com.sonymobile.support:id/eula_agree").click()
except Exception as e:
pass
try:
driver.find_element_by_id("com.android.packageinstaller:id/permission_allow_button").click()
except Exception as e:
pass
driver.find_element_by_xpath("//android.widget.ImageView[@resource-id='com.sonymobile.support:id/icon'][@instance='4']").click() #使用xpath下class、resource-id、instance联合定位
#driver.find_element_by_xpath("//android.widget.ImageView[@instance='4']").click() #效果同上句,用xpath下class及instance联合定位
Appium常用Api实操的更多相关文章
- 7、Appium常用API
嗯,官网已经介绍的很全了.会选几个常用API后期整理. Appium常用API地址:http://appium.io/docs/cn/writing-running-appium/appium-bin ...
- kivy之Button常用属性实操练习
kivy提供了Button按钮一系列属性来改变样式,下面列了常用的一些Button属性并用实操案例进行演练学习. 新建一个main.py,内容代码如下: from kivy.app import Ap ...
- Appium常用API(二)
接前面的常用API(一),本文接着介绍如下: 1.press_keycode press_keycode(self, keycode, metastate=None): Sends a keycode ...
- appium 常用api介绍(2)
前言:接着上一篇继续讲常用的一些api 参考博文:http://blog.csdn.net/bear_w/article/details/50330565 1.send_keys send_keys( ...
- appium 常用API使用总结!
将常用函数进行适用总结,后期在使用的过程中直接查找调用即可 获取界面属性.控件属性 1.current_activity:获取activity名称 device.current_activity 2. ...
- Appium常用API(一)
Appium作为当下一款移动应用的自动化测试工具,对于测试来说重要性不言可寓,废话不多说,下面总结下它常用的API: 1.contextscontexts(self): Returns the con ...
- appium 常用API
''.appium api第二弹 锋利的python,这是初稿,2015/1/5 如有错误的地方,请同学们进行留言,我会及时予以修改,尽量整合一份ok的api 作者:Mads Spiral QQ:79 ...
- appium 常用api介绍(1)
前言:android手机大家都很熟悉,操作有按键.触摸.点击.滑动等,各种操作方法可以通过api的方法来实现. 参考博文:http://blog.csdn.net/bear_w/article/det ...
- APPIUM 常用API介绍(3)
1.send_keys send_keys(self, *value): Simulates typing into the element[在元素中模拟输入(开启appium自带的输入法并配置了ap ...
随机推荐
- 浏览器工作原理(三):js运行机制及Event Loop
参考:https://segmentfault.com/a/1190000012925872#articleHeader4 一.为什么有Event Loop Javascript设计之初就是一门单线程 ...
- 关于sencha touch中给文本添加焦点无效的解决方案
目前的解决方案是给你的执行代码加上一个timeout延迟100ms+ setTimeout(function(){ SoftKeyboard.isShowing(function(isShowing) ...
- ubuntu 12.04 配置-1
今天对ubuntu 12.04 系统进行了相关的配置,配置的主要内容有: 1)php + mysql + apache2 web开发环境的搭建: 2)vim的简单保存退出指令: 3)文件和文件夹权限的 ...
- C++获取本机的ip地址程序
#include <WinSock2.h> #pragma comment(lib,"ws2_32") //链接到ws2_32动态链接库 class CInitSock ...
- TortoiseSVN/Git覆盖图标失效的解决方案
之前在电脑上安装了TortoiseGit和TortoiseSVN这两种版本控制,使用一段时间之后发现,这两种版本控制的覆盖图标都无法显示,起初以为是git和svn使用的图标的不一样,有冲突,导致这两种 ...
- Spring 学习记录8 初识XmlWebApplicationContext(2)
主题 接上文Spring 学习记录7 初识XmlWebApplicationContext refresh方法 refresh方法是定义在父类AbstractApplicationContext中的. ...
- 好一个Time_Wait状态(TCP/IP)
首先简单介绍一下Time_Wait是个什么鬼: 在TCP/IP协议中,我们都知道有三次握手四次挥手的过程,先来一个简单的图: 各个状态和基本的过程想必了解过TCP/IP协议的人都清楚,本次介绍的主题只 ...
- 如何设置tomcat,直接通过IP 访问
找到tomcat的主目录,进入conf文件夹,找到server.xml文件,并打开: 修改tomcat的监听端口为80端口: 在server.xml文件中找到: <Connector por ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 13—Clustering 聚类
Lecture 13 聚类 Clustering 13.1 无监督学习简介 Unsupervised Learning Introduction 现在开始学习第一个无监督学习算法:聚类.我们的数据没 ...
- ubuntu 下安装nanomsg和nnpy
nanomsg nanomsg是ZeroMQ作者用C语言重写的一个Socket库,其用法和模式和ZeroMQ差不多,但是具有更好的性能和更完善的接口. 首先下载源码 wget https://gith ...