AppiumDesktop录制脚本
AppiumDesktop启动页面:
启动AppiumDesktop以后点击该页面右上角的Start New Session按钮,就会启动一个新的会话窗口(如下图),在这个窗口我们需要配置一些Desired Capabilities信息:
platformName:'Android' #Android手机
platformVersion:'4.3 ' #模拟器系统是4.3
deviceName:'192.168.105.101::5555' # 这个是模拟器的设备名称
app:'D:\\app\\SHIPPER_Android_TEST_4.1.1.0.apk' # 安装自己待测app,类型为filepath
appPackage:'com.taobao.taobao' #app的包名称
appActivity:'com.taobao.tao.welcome.Welcome ' #activity的名称
使用命令查看:adb shell dumpsys activity activities
noReset:是一个bool值,选TRUE。
如果想要使用真机,必须再加一个字段udid,是text类型。
2.参数配置好之后可以保存下,然后启动模拟器,再点Start Session按钮就能定位元素了
定位元素信息
写Appium脚本的最重要的一个信息是定位元素,获取元素的ID或者xpath等等类似的信息。
只需要点击Inspector最左边一栏的Select按钮,然后再去点击所要获取信息的元素即可,当元素突出显示时,其信息将显示在Inspector右侧的详细视图中。有些是用accessibility id 定位,有些是xpath定位或者其他的定位信息,但是在iOS应用上Appium推荐使用accessibility id 来定位一个元素信息。
在Inspector窗口的中间是您的应用程序的层次结构,表示为XML。
滑动页面(元素)
现在可以定位当前页面的元素了,但是怎么滑动到下一个页面或者怎么滑动页面上的滑动条(slider)呢?
选中Swipe。模拟在手机上的操作手势,从起点到终点各点击一下,就实现了滑动。
点击某一个元素
如果我们想要点击某一个元素进行下一步操作,比如在输入框内输入文本或者弹出一个alert该怎么操作呢?
选中Tap。然后再去点击textfield或者alert我们就可以进行下一个操作了。如果想要定位alert上的元素信息,那就在alert弹出的时候在切换到Select,然后点击想要定位的元素就行了。
录制脚本
这真的是一个很实用的功能。他似乎解决了我们一个大问题,那就是该使用哪个API的问题以及脚本的编写规范的问题。对于初步入坑的小伙伴来说是一个很好的参考。脚本录制功能就是那个眼睛图标,如下图:

点击该按钮以后如下图:

然后就可以在左边随便对App进行操作了,此处我进行的操作有:点击输入框,点击Alert,滑动滑动条,滑动屏幕,点击软键盘并输入文本(这里我选择是Python语言)。这时候Inspector生成的脚本是非常简单的,只是对你操作的步骤进行记录,还不能执行,这段脚本如下:
TouchAction(driver).tap([(167, 73)])
TouchAction(driver).tap([(81, 300)])
TouchAction(driver).tap([(303, 414)])
el1 = driver.find_element_by_accessibility_id("IntegerA")
el1.click()
el1.send_keys("Hello")
TouchAction(driver)
.press({x: 198, y: 393})
.moveTo({x: 50: y: 0})
.release()
TouchAction(driver)
.press({x: 335, y: 264})
.moveTo({x: -183: y: -3})
.release()
TouchAction(driver).tap([(191, 498)])
TouchAction(driver).tap([(357, 698)])
反正我没看懂这段代码。别担心,这只是Inspector默认生成的极简脚本,善良的Inspectory为我们提供了一个功能那就是将极简脚本变成可执行脚本,操作如下图:

现在脚本就变成了这个样子:
# This sample code uses the Appium python client
# pip install Appium-Python-Client
# Then you can paste this into a file and simply run with Python
from appium import webdriver
caps = {}
caps["platformName"] = "iOS"
caps["platformVersion"] = "10.3"
caps["deviceName"] = "iPhone 7 Plus"
caps["app"] = "http://appium.s3.amazonaws.com/TestApp7.1.app.zip"
caps["noReset"] = True
driver = webdriver.remote("http://0.0.0.0:4723/wd/hub", caps)
TouchAction(driver).tap([(167, 73)])
TouchAction(driver).tap([(81, 300)])
TouchAction(driver).tap([(303, 414)])
el1 = driver.find_element_by_accessibility_id("IntegerA")
el1.click()
el1.send_keys("Hello")
TouchAction(driver)
.press({x: 198, y: 393})
.moveTo({x: 50: y: 0})
.release()
TouchAction(driver)
.press({x: 335, y: 264})
.moveTo({x: -183: y: -3})
.release()
TouchAction(driver).tap([(191, 498)])
TouchAction(driver).tap([(357, 698)])
driver.quit()
AppiumDesktop录制脚本的更多相关文章
- appium-desktop录制脚本二次开发,生成我司自动化脚本
目的 通过对appium-desktop脚本录制功能进行二次开发,使录制的java脚本符合我司自动化框架要求. 实现步骤 1.增加元素名称的输入框 由于ATK(我司自动化测试框架)脚本中元素是以“ap ...
- Appium移动自动化测试-----(六)2.AppiumDesktop录制脚本生成极简脚本
AppiumDesktop启动页面: 启动AppiumDesktop以后点击该页面右上角的Start New Session按钮,就会启动一个新的会话窗口(如下图),在这个窗口我们需要配置一些Desi ...
- android-sdk-window的环境搭建以及appium简单录制脚本的使用
大家好,今天给大家带来的是appium的环境搭建以及简单的录制脚本,自学的过程中入了不少坑,下面给大家开始分享! 使用Appium录制脚本必备三大金刚:Appium-desktop(至于为什么用这个, ...
- 基于webdriver的jmeter性能测试-通过jmeter实现jar录制脚本的性能测试
续接--基于webdriver的jmeter性能测试-Eclipse+Selenium+JUnit生成jar包 在进行测试前先将用于支持selenium录制脚本运行所需的类包jar文件放到jmeter ...
- JMeter专题系列(二)录制脚本
环境 Badboy version 2.1.1 JDK: 1.7.0_67 Apache JMeter-2.11 ----------------------------------------- ...
- [原创]LoadRunner 12.02 录制脚本时提示无Internet访问,如何解决?
在使用LoadRunner 12.02 进行录制脚本时提示无Internet访问,如下图: 翻译中文如下: 可以尝试以下方式解决:点击弹出框中的“Yes”即可. 若还是有问题,尝试以下方式: (1)L ...
- loadRunner录制脚本常见问题及解决方法
1.是用IE9录制IE浏览器异常关闭 系统:win7 LR:11 浏览器:IE9 lr使用IE9录制脚本时,浏览器异常关闭且lr报the recording of the application wa ...
- 新安装loadrunner无法录制脚本的原因之一及解决方案
eg:IE浏览器 1.新安装的loadrunner录制脚本,一直是加载中的状态: 2.苦思冥想终于找到解决方案: 3.IE浏览器-->设置-->Internet选项 4."安全& ...
- 【原创】loadrunner12.53 录制脚本时 打不开网页或者打开网页慢?
问题描述: 之前刚装12.5版本时候,用 WebTours测试过,应用程序选择自己本地IE浏览器.exe程序,输入url地址就可以成功录制了 . 但是由于公司网络配置环境改变了(猜测),现 ...
随机推荐
- 5.Flask-Migrate
1.1.项目结构重构 (1)config.py DB_URI = "mysql+pymysql://root:123456@127.0.0.1:3306/flask_migrate?char ...
- vue初始化项目,构建vuex的后台管理项目架子
构架vuex的后台管理项目源码:https://github.com/saucxs/structure-admin-web 一.node安装 可以参考这篇文章http://www.mwcxs.top/ ...
- C# 《编写高质量代码改善建议》整理&笔记 --(五)类型设计
1.区分接口和抽象类的应用场合 区别: ①接口支持多继承,抽象类则不能. ②接口可以包含方法,属性,索引器,事件的签名,但不能有实现,抽象类则可以. ③接口在增加新方法后,所有的继承者都必须重构,否则 ...
- service相关
本篇仍以问题为驱动 一.什么时Service? Service是Android程序中四大基础组件之一,它和Activity一样都是Context的子类,只不过它没有UI界面,是在后台运行的组件.Ser ...
- Springboot 系列(五)Spring Boot web 开发之静态资源和模版引擎
前言 Spring Boot 天生的适合 web 应用开发,它可以快速的嵌入 Tomcat, Jetty 或 Netty 用于包含一个 HTTP 服务器.且开发十分简单,只需要引入 web 开发所需的 ...
- AspNetCoreapi 使用 Docker + Centos 7部署
好久没有更新文章了,前段时间写了一系列的文章放到桌面了,想着修修改改,后来系统中勒索病毒了还被公司网络安全的抓到是我电脑,后来装系统文章给装丢了.然后好长一段时间没有写了. 今天记录一下AspNetC ...
- 如何在Eclipse中彻底修改一个项目名称
在实际工作中,有时候为了赶时间,往往通过复制项目得到一个成型的框架.那么怎么才可以彻底修改项目名称呢? 1.web.xml 2.工作空间中找到当前项目下.project文件 3.工作空间中找到当前项目 ...
- MYSQL SQL语句优化
1.EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划. 下面来个简单的示例,标注(1.2.3.4.5)我们要重点关注的数据: type列,连接类型.一个好的SQL语句至少要 ...
- Java运行时数据区概述
Java 虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,如图所示: 程序计数器 程序计数器是一块比较小的内存空间,可以看作是当前线程所执行的字节 ...
- 移动开发基础-学习笔记二-字体图标、less、bootstrap入门
1.字体图标 1.字体图标都是用svg图片 1.svg图片不失真 2.svg图标由设计师提供 3.为了减少网络请求,会把svg图标转换成字体图标,放到字体文件中,通过字体库的方式使用 2.制作步骤 1 ...