robotium学习笔记V0.2
Robotium自动化测试框架实用教程(图)
Robotium⾃动化测试框架实⽤教程(图)⼀、简介Robotium是⼀款国外的Android⾃动化测试框架,主要针对Android平台的应⽤进⾏⿊盒⾃动化测试,它提供了模拟各种⼿势操作(点击、长按、滑动等)、查找和断⾔机制的API,能够对各种控件进⾏操作。
Robotium结合Android官⽅提供的测试框架达到对应⽤程序进⾏⾃动化的测试。
另外,Robotium 4.0版本已经⽀持对WebView的操作。
Robotium 对Activity,Dialog,Toast,Menu 都是⽀持的。
⼆、相关下载源码获取:/p/robotium/源API⽂档:/svn/doc/index.htmlrobotium5.1下载和最新API⽂档:/s/1bnlO8MF官⽅例⼦记事本:/s/1qWLVL72重签名⼯具:/s/1i3H0tKD三、常⽤语法1.等待timeout毫秒⼀个名字为name的Activity启动: waitForActivity(String name, int timeout)实例:assertTrue("⽆法启动启动类", solo.waitForActivity ("MainActivity", 30000));2.Robotium将睡眠设置的毫秒数:sleep(int time)实例:solo.sleep(5000)3.清空EditText的内容:clearEditText(android.widget.EditText editText)实例:solo.clearEditText((EditText)solo.getView ("edtInsertName"))4.根据按钮上的⽂字点击按钮:clickOnButton(String text)实例:solo.clickOnButton("^绿⾊$");5.根据⽂字点击控件:clickOnText(String text)实例:solo.clickOnText("控件上显⽰⽂字");6.输⼊内容:enterText(android.widget.EditText editText, String text)solo.enterText((EditText)solo.getView("edtInsertName"), "说些什么好呢?");7.返回:goBack()8.截屏并保存为设置的名字:takeScreenshot(String name)默认保存在: /sdcard/Robotium-Screenshots/9.解锁屏幕:unlockScreen()四、实战-针对APK进⾏的测试被测试项⽬为,下⾯是实战的具体步骤1. 配置ANDROID_HOM E为android sdk的安卓⽬录,例如:D:\android-sdk2. 在path下添加这两个:%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;3. 需要把APK重新签名,因为robotium要求被测应⽤和测试代码要有⼀致的签名, 所以我们需要把下载到的apk,通过re-sign.jar来产⽣debug key的apk,这个重新⽣成的apk就会跟测试项⽬签名⼀致了4. 下载完后,需要配置ANDROID_HOME,就是安卓SDK的位置,然后把APK拉到图标上,就会⾃动⽣成⼀个debug key的apk,如果⽆法直接单击re-sign.jar运⾏,需要切换到放置该jar⽂件的⽬录,cmd执⾏java -jar re-sign.jar产⽣新apk的过程中会弹出⼀个信息框,记得截下图,因为⾥⾯有两个信息我们等会的代码中需要⽤到5. 安装产⽣的apk。
kuka机器人学习笔记(一)
kuka机器人学习笔记(一)KUKA机器人学习笔记KUKA机器人是一种德国品牌的工业机器人,它被广泛应用于汽车、电子及其他工业领域。
而要学习这种机器人,需要了解其基本知识和操作技巧。
一、了解KUKA机器人的基本结构和工作原理1.1 机器人的结构KUKA机器人由机械、电气、软件三个部分组成,其中机械部分主要包括机械臂、控制盒和操纵器。
机械臂是机器人的核心部分,它由多个关节组成,可以进行各种姿态的移动。
控制盒是机器人的“大脑”,它主要负责控制机械臂的运动和姿态。
操纵器是机械臂的一个手柄,用于手动控制机器人。
1.2 机器人的工作原理KUKA机器人通过控制各个关节的运动来实现不同的动作,使机械臂达到对物品的抓取、搬运和加工等操作。
机器人的运动主要受控制盒内的程序指令,或通过操纵器进行手动控制。
二、掌握KUKA机器人的编程方法和技巧2.1 机器人编程的基本结构KUKA机器人的编程是指通过编写程序指令来控制机械臂的运动。
编程程序分为数值型编程和符号型编程两种方式,其中一般使用符号型编程。
编程的结构一般由程序头、程序体和程序尾三部分组成,其中程序头主要是声明变量和定义程序的属性;程序体则是编写具体指令的部分;程序尾则用来结束程序的运行。
2.2 常用的机器人编程语句KUKA机器人编程最常用的语句包括MOVE、PTP、LIN、CIRC、WAIT等。
其中MOVE语句表示机器人执行移动动作;PTP表示点到点的直线插补;LIN表示直线插补;CIRC表示圆弧运动;WAIT表示等待操作完成。
由于机器人结构复杂,编程语句的合理搭配很重要。
三、认识KUKA机器人的安全措施和操作规范3.1 安全措施在操作KUKA机器人时,一定要注意安全,机器人需要遵循以下安全措施:避免与机器人工作范围内的任何移动部件接触;必须检查和调整机器人光电探头的位置以确保机器人周围的安全;确保电气和机械安装正确,并满足国家和当地的安全标准等。
3.2 操作规范操作KUKA机器人时,还需要遵守一些操作规范,以免造成人员伤害或机器故障:在操作前,一定要检查机器人和操作区域的情况,确保没有人员或物品摆在机器人的巡回路径上;离开机器人前,应该把机器人置于安全位置,并关闭机器人的电源,以防止机器人异常运动和操作区域的危险。
《工业机器人离线编程与仿真(ROBOGUIDE)》读书笔记模板
目录分析
1
内容提要
智能制造应用 2
型人才培养系 列教程编委会
3
基础入门篇
4
模拟仿真篇
5
离线编程篇
项目一初识离线编程仿真软件 项目二创建仿真机器人工作站 项目三离线示教编程与程序修正
项目四基础搬运的离线仿真 项目五分拣搬运的离线仿真
项目六轨迹绘制与轨迹自动规划的编程 项目七基于机器人-变位机系统的焊接作业编程
读书笔记
这是《工业机器人离线编程与仿真(ROBOGUIDE)》的读书笔记模板,可以替换为自己的心得。
精彩摘录
这是《工业机器人离线编程与仿真(ROBOGUIDE)》的读书笔记模板,可以替换为自己的精彩内容摘录。
作者介绍
这是《工业机器人离线编程与仿真(ROBOGUIDE)》的读书笔记模板,暂无该书作者的介绍。
工业机器人离线编程与仿真 (ROBOGUIDE)
读书笔记模板
01 思维导图
03 目录分析 05 精彩摘录
目录
02 内容摘要 04 读书笔记 06 作者介绍
思维导图
关键字分析思维程序
教程
软件
入门篇
仿真
编程
离线 项目
仿真篇
编程
编程
模拟
离线
示教
基础
系列
内容摘要
本书以FANUC机器人为对象,介绍工业机器人离线编程与仿真的基本知识、软件操作、模拟仿真和离线程序 设计。全书共分3篇7个项目,主要内容包括初识离线编程仿真软件、创建仿真机器人工作站、离线示教编程与程 序修正、基础搬运的离线仿真、分拣搬运的离线仿真、轨迹绘制与轨迹自动规划的编程、基于机器人-变位机系统 的焊接作业编程。
谢谢观看
robotium工作原理
robotium工作原理Robotium是一种用于Android应用测试的自动化测试框架,它的工作原理是通过模拟用户在应用界面上的操作来进行自动化测试。
本文将从Robotium的基本原理、工作流程和实现方式等方面介绍其工作原理。
Robotium基于JUnit框架,通过继承TestCase类来进行测试用例的编写。
它提供了一系列的API方法,可以模拟用户在应用界面上的各种操作,如点击按钮、输入文本、滑动屏幕等。
这些操作是通过调用Android系统提供的UI自动化框架Instrumentation来实现的。
在测试开始之前,需要先安装应用程序,并启动测试Activity。
接着,测试框架会根据编写的测试用例代码,模拟用户的操作来执行测试。
测试用例可以通过查找界面上的控件,如按钮、文本框等,然后调用相应的操作方法来进行操作。
例如,可以通过调用clickOnButton()方法来模拟点击按钮的操作。
在执行测试用例时,Robotium会自动等待应用界面加载完毕后再进行操作,以保证测试的准确性。
同时,它还提供了一些断言方法,用于判断测试结果是否符合预期。
例如,可以使用assertEqual()方法来判断两个字符串是否相等。
除了模拟用户操作外,Robotium还可以获取应用界面上的信息,如控件的文本、大小、位置等。
这些信息可以用于验证测试结果或者辅助测试用例的编写。
例如,可以通过getText()方法获取文本框中的文本内容,然后进行判断或者进一步操作。
在整个测试过程中,Robotium会记录用户的操作和应用界面的状态,并生成相应的日志和报告。
这些日志和报告可以帮助开发人员定位问题,并提供测试结果的可视化展示。
此外,Robotium还支持批量执行测试用例,可以节省测试时间并提高测试效率。
总结来说,Robotium的工作原理是通过模拟用户在应用界面上的操作来进行自动化测试。
它基于JUnit框架,通过继承TestCase类来编写测试用例,使用Android系统提供的UI自动化框架Instrumentation来实现操作的模拟。
robotium入门教程(一)
测试代码编写
• 新建测试类
package com.example.android.apis.app.test; import android.test.ActivityInstrumentationTestCase2; import com.example.android.apis.ApiDemos; public class TestForwarding extends ActivityInstrumentationTestCase2<ApiDemos> {
Robotium入门(一)
搭建环境
前提知识
• 知道Robotium是干嘛的 • 会Java编程 • 略懂Android开发 • 了解Activity以及画面迁移 • 了解各控件的简单使用(知道各控件的设置) • 了解Junit(非必须知识) • 了解一般的测试理论(理论值与实际值的对照)
课程目标
测试代码编写
• 确定待测Activity
我们拿一个简单的Forwarding页面来测试
测试代码编写
• 新建测试类
测试类与被测类包名相同,或者多一个test包 测试类一般以“Test”开头 测试类继承于ActivityInstrumentationTestCase2 泛型用待测工程的启动Activity
运行测试代码
• 写两个测试方法,一个OK,一个错误。
/** * 一个空的测试函数,测试框架是否搭建OK。 */ public void testEmptyOK() {
assertEquals("Empty test.", 1, 1); so.sleep(3000); }
/** * 一个空的测试函数,测试框架是否搭建OK。 */ public void testEmptyError() {
《ROS机器人开发 实用案例分析 原书第2版 》读书笔记思维导图
03
2.4.3 熟 悉Gazebo 界面
05
2.4.5 Gazebo模 型验证
2.4.8 移动机器人 模型
2.4.7 机器人模型 调整
2.4.9 其他的机器 人模拟环境
第3章 TurtleBot机器人操控
01
3.1 Tur tleBo t 2机器人 简介
02
3.2 下载 Tur tleBot 2模拟器...
4.5.5 Tur tleBot 3机器人...
4.5.6 使用 Tur tleBot 3进...
4.5.7 r q t _ r e c o n f i g u r. . .
4.5.8 进一步探索 ROS导航
第5章 构建模拟的机器人手臂
5.1 Xacro的特点
5.2 采用Xacro建 立一个关节式机器...
05
6.2.5 Baxter手 臂的抓手
6.3.1 安装Baxter SDK软件
6.3.2 安装Baxter 模拟器
6.3.3 配置Baxter shell
6.3.4 安装MoveIt!
6.4.2 “热身”练 习
6.4.1 启动Baxter 模拟器
6.4.3 弯曲Baxter 手臂
6.5.1 关节与 1
T...
3.5.1 网络类型 3.5.2 网络地址
3.5.3 远程计算机网 络设置
3.5.4 上网本网络设 置
3.5.5 SSH连接 3.5.6 网络设置小结
3.5.7 排查网络连接 中的故障
3.5.8 Tur tleBot 2机器人...
3.7.2 采用ROS命 令控制Turtl...
3.7.1 采用键盘远 程控制Turtle...
《工业机器人现场编程》模块二ABB工业机器人的基本操作
《工业机器人现场编程》模块二ABB工业机器人的基本操作模块二主要介绍ABB工业机器人的基本操作,包括机器人的坐标系、示教器操作、碰撞检测、运动模式和编程语言等方面。
下面将详细介绍这些内容。
首先,我们来介绍机器人的坐标系。
ABB工业机器人通常采用三个坐标系:世界坐标系、基座标系和工具坐标系。
世界坐标系是机器人工作空间的全局坐标系,用于描述机器人在整个工作空间中的位置。
基座标系是机器人控制器的固定坐标系,用于控制机器人的运动。
工具坐标系是机器人末端工具的坐标系,用于描述工具在机器人坐标系中的位置和姿态。
接下来是示教器的操作。
ABB机器人示教器通常有独立示教器和手持示教器两种。
独立示教器是一种独立操作的设备,用于对机器人进行编程和操作。
手持示教器是一种手持设备,可以直接操作机器人的移动和操作。
通过示教器,可以对机器人进行位置示教、路径示教和程序示教等操作。
然后是碰撞检测。
ABB工业机器人通常配备有高精度的碰撞检测系统,用于检测机器人与外部环境之间的碰撞。
在编程时,可以设置碰撞检测功能,使机器人在运动过程中能够自动避开障碍物,保证机器人和工作环境的安全。
接下来是运动模式。
ABB工业机器人有多种运动模式可选,包括关节运动、点到点运动、直线插补运动、圆弧插补运动等。
关节运动是指机器人关节按照一定的速度和加速度进行运动。
点到点运动是指机器人从一个位置运动到另一个位置。
直线插补运动是指机器人按照直线轨迹进行运动。
圆弧插补运动是指机器人按照圆弧轨迹进行运动。
在编程时,可以根据实际需求选择合适的运动模式。
最后是编程语言。
ABB工业机器人通常使用RoboGuide软件进行编程,支持多种编程语言,包括ABB的自有编程语言RAPID和标准编程语言C++、Python等。
RAPID是ABB工业机器人的特定编程语言,用于控制机器人的运动和操作。
C++和Python是常用的编程语言,可以进行更加灵活和复杂的编程操作。
在编程时,可以根据具体的需求选择合适的编程语言。
Robotium从不会到精通
一、Robotium简介Robotium是一个测试框架,能够方便你为Android应用程序编写强大、健壮的自动化黑盒测试用例。
利用Robotium的支持,用例开发人员能够编写功能、系统和验收测试方案,跨越多个 Android activities。
Robotium支持Activities、Dialogs、Toasts、Menus和Context Menus。
Robotium自动化测试方法能够模仿普通用户行为,可以试着把一些原来由测试工程师做的测试变成Robotium自动化实现。
Robotium 提供下列好处1.以最小的应用程序知识,开发功能强大的测试案例。
2.框架支持多个activities 自动活动。
3.最短的时间需求写出测试用例。
4.测试案例的可读性比标准的仪器测试大大提高。
5.通过运行时绑定GUI组件使测试用例更强大。
6.执行测试用例速度快。
7.顺利整合了Maven或Ant来运行测试,持续集成的一部分。
8.该工具用于黑盒的自动化测试。
可以在有源码或者只有APK的情况下对目标应用进行测试,提供了模仿用户操作行为的API,比如在某个控件上点击,输入Text 等等。
二、Robotium测试工程创建建立工程有两种:1、依赖工程建立:如notePadTest2、建立独立的测试工程,这样的工程需要将apk包重新签名,之后安装到模拟器或真机上。
然后就可以运行了。
确保环境1.已经安装eclipse2.Eclipse已经配置好android相关环境3.存在已经创建模拟器4.存在一个编译通过的被测工程这里以AndroidSDK/samples/android-9/ Mogan_v1.1.3_BeautyChina为例:在Eclipse中导入该工程 File --> New --> Project --> Android Project --> Create Project from existing source --> Mogan_v1.1.3_BeautyChina.步骤1.在官方down栏下下载所需要的jar包地址:/p/robotium/downloads/list2.创建一个Test Project1)打开eclipse,选择File -> New -> Project… -> Android -> Android Test Project,点击Next。
Robotics Toolbox实例学习汇总
ROBOT(DYN, ...) %用DYN矩阵来创建一个机器人对象利用MATLAB中Robotics Toolbox工具箱中的transl、rotx、roty和rotz可以实现用齐次变换矩阵表示平移变换和旋转变换。
下面举例来说明:A 机器人在x轴方向平移了0.5米,那么我们可以用下面的方法来求取平移变换后的齐次矩阵:>> transl(0.5,0,0)ans =1.0000 0 0 0.50000 1.0000 0 00 0 1.0000 00 0 0 1.0000B 机器人绕x轴旋转45度,那么可以用rotx来求取旋转后的齐次矩阵:>> rotx(pi/4)ans =1.0000 0 0 00 0.7071 -0.7071 00 0.7071 0.7071 00 0 0 1.0000C 机器人绕y轴旋转90度,那么可以用roty来求取旋转后的齐次矩阵:>> roty(pi/2)ans =0.0000 0 1.0000 00 1.0000 0 0-1.0000 0 0.0000 00 0 0 1.0000D 机器人绕z轴旋转-90度,那么可以用rotz来求取旋转后的齐次矩阵:>> rotz(-pi/2)ans =0.0000 1.0000 0 0-1.0000 0.0000 0 00 0 1.0000 00 0 0 1.0000当然,如果有多次旋转和平移变换,我们只需要多次调用函数在组合就可以了。
另外,可以和我们学习的平移矩阵和旋转矩阵做个对比,相信是一致的。
3 轨迹规划利用Robotics Toolbox提供的ctraj、jtraj和trinterp函数可以实现笛卡尔规划、关节空间规划和变换插值。
其中ctraj函数的调用格式:TC = CTRAJ(T0, T1, N)TC = CTRAJ(T0, T1, R)参数TC为从T0到T1的笛卡尔规划轨迹,N为点的数量,R为给定路径距离向量,R的每个值必须在0到1之间。
Robot使用技巧和实用函数集合
Robot使用技巧和实用函数集合第一个:(转自网上)*******************************************************************功能说明:出现一个提示对话框,N秒后消失,比如说:提示等待一个窗口阿,有时候这个窗口没了,我也不知道脚本运行到什么地方了,提示一下挺好,也方便其他的测试员修改,而且,也不影响无人值守的操作例子:SQAMsgbox "test","title",5Global iTime as IntegerDeclare Function TimedDlgFunc(id As String, Action As Integer, SuppValue As Long) As IntegerDeclare Function SQAMsgBox(sMsgText as String, Optional vMsgCaption as Variant, Optional vTimeOut as Variant) as IntegerFunction TimedDlgFunc(id As String, Action As Integer, SuppValue As Long) As IntegerStatic StartTimeDim EndTimeDim vTimeoutValue as VariantSelect Case ActionCase 1 'Dialog box InitializationStartTime = TimerIf StartTime + iTime >= 86400 ThenStartTime = 86400 - StartTime - iTimeEnd IfTimedDlgFunc = 1Case 2 'Button pushed or any control changed (except typing in text or combo box)Select Case SuppValueCase 1DlgEnd -1Case 2DlgEnd 0Case ElseTimedDlgFunc = 0End SelectCase 3 'Change in text or combo box contentsTimedDlgFunc = 1Case 4 'Change of control focusTimedDlgFunc = 1Case 5 'Idle state (return 0 to prevent this being continually called)EndTime = TimerIf (EndTime - StartTime) >= iTime ThenDlgEnd -1End IfvTimeoutValue = Format(iTime - (EndTime - StartTime), "#.#")DlgText DlgControlID("txtTimeValue"), CStr(vTimeoutValue)TimedDlgFunc = 1End SelectEnd FunctionFunction SQAMsgBox(sMsgText as String, Optional vMsgCaption as Variant, Optional vTimeOut as Variant) as Integer Dim Result as IntegerDim TotalTime As IntegerDim sCmdText as StringDim sTimeoutText as StringDim vValue as VariantIf IsMissing(vMsgCaption) ThenvMsgCaption = "SQAMsgBox"End IfIf IsMissing(vTimeOut) ThenvTimeOut = 20 'secondsEnd IfsTimeoutText = "Timeout: "'-----Begin Dialog dlgMsgBox 200, 80, vMsgCaption, .TimedDlgFuncGroupBox 5, 2, 190, 40, "", .grpMsgTxtText 15, 11, 175, 25, sMsgText, .txtMsgTextText 15, 47, 180, 20, sCmdText, .txtCmdText'--------------Button 20, 60, 40, 14, "&OK", .btnOKButton 140, 60, 40, 14, "&Cancel", .btnCancelText 78, 63, 30, 10, sTimeoutText, .txtTimeTextText 108, 63, 20, 10, vTimeout, .txtTimeValueEnd Dialog'-----Dim TimedDlg As dlgMsgBoxiTime = CInt(vTimeOut)Result = Dialog(TimedDlg)If Result = 2 ThenSQAMsgBox = sqaFailElseSQAMsgBox = sqaPassEnd IfEnd Function*******************************************************************第二个:(来自于网上)******************************************************************关于Recognition一共分为Recognition, ParentRecognition, FullRecognition1. To find the recognition method of the currently active window:Result=SQAGetProperty(".\","Recognition",value)Returned value:Type=Window;Name=frmMain抓出来的是当前窗口的一些信息2. To find the immediate parent of the tree view item Bach:Result=SQAGetProperty("Name=treMain;\;ItemText=Bach","arentRecognition",value)Returned value:Type=TreeView;Name=treMain抓出来的是树型结构的父结点的信息3. To find the complete object path of the tree view item Bach, beginning with the desktop and ending with the target object itself:Result=SQAGetProperty("Name=treMain;\;ItemText=Bach","FullRecognition",value)Returned value:Type=Window;Name=frmMain;\;Type=TreeView;Name=treMain;\;Type=TVItem;ItemText=Bach抓出来的是树型结构中指向该控件的全部路径第三个:(来自于网上)****************************************Rational Robot中自动进行100次操作Rational Robot中的SQA Basic与Basic语言极为类似,下面是一个for循环的例子,其中cstri()函数把整数转换成字符串。
RobotFramework教程使用笔记——Selenium2Library库
RobotFramework教程使⽤笔记——Selenium2Library库selenium之前已经学习介绍过了,它是⼀个⽀持多语⾔、多平台、多浏览器的web⾃动化测试框架,在robotframework中也可以导⼊selenium库来进⾏web⾃动化测试。
它使⽤selenium框架中的相关函数⽅法,也可以理解为将selenium中的函数⽅法封装成了关键字在robotframework中使⽤。
1.安装selenium2library在测试套件中直接导⼊library,如果正常就显⽰⿊⾊,如果导⼊有问题会显⽰红⾊。
2.使⽤selenium库简单的例⼦:打开百度,搜索robotframework运⾏查看测试结果:常⽤的selenium2关键字:1.Open Browser 打开浏览器2.Close Browser 关闭浏览器3.Maximize Browser Window 浏览器最⼤化4.Get Window Size设置浏览器宽⾼5.Get Window Position设置浏览器位置6.Input Text ⽂本输⼊7.Click Button 按钮点击8.Click Element 点击元素9.Wait Until Element Contains 等待元素出现10.Get Title 获取当前页⾯的title11.Get Text 获取⽂本信息12.Get Element Attribute 获取元素属性 Get Element Attribute id=kw@name 先定位元素然后获取@后⾯的属性的值13.断⾔:可以看到有判断是否为空,是否相等,是否为真,是否包含等等。
14.表单切换和退出15.下拉框的相关关键字有多选按钮,表,按表下标,按表的值等等。
16.Execute Javascript 执⾏js。
机器人tcp六点法标定原理
机器人tcp六点法标定原理宝子们!今天咱们来唠唠机器人TCP六点法标定原理这个超有趣的事儿。
咱先得知道啥是机器人的TCP,TCP就是Tool Center Point,也就是工具中心点啦。
就好比机器人拿着个工具干活,那这个工具上最关键的那个点就是TCP,像拿个焊枪焊接,焊枪头那儿就是TCP;拿个画笔画画,笔尖就是TCP。
那为啥要进行标定呢?你想啊,机器人要是不知道这个TCP到底在哪,干活的时候那不就乱套了嘛。
就像你闭着眼睛去拿东西,肯定拿不准呀。
标定就是让机器人精确地知道这个TCP的位置和姿态。
现在就到咱们的六点法闪亮登场啦。
这六点可不是随随便便选的六点哦。
第一点呢,它是用来确定TCP在某个方向上的一个基本位置。
比如说,我们可以先让机器人把工具垂直向下,然后在工作台上找一个点,这个点就像是一个基准点。
这就好比你在画画的时候,先确定一个角的位置一样。
机器人通过各种传感器或者算法,知道这个时候工具相对于它自身的位置关系,这就为确定TCP打下了一个小基础。
第二点,可能会改变一下工具的姿态,比如说让工具稍微倾斜一点。
这时候再去测量这个点,就相当于从另外一个角度来观察TCP的位置啦。
就像你看一个东西,从正面看了,再从侧面看一下,这样就能对这个东西的形状和位置有更全面的了解。
机器人也是这样,通过不同姿态下对这个点的测量,能得到更多关于TCP位置的信息。
第三点,又换一种姿态,可能是水平方向上有一点偏移。
这就像是从不同的方向去“摸”TCP的位置。
每一次的测量,机器人的控制系统就像小侦探一样,收集着各种线索。
第四点,再换一种更复杂一点的姿态,可能是倾斜加偏移的组合。
这个时候,机器人对TCP位置的判断就更加精确啦。
就好像你通过多次从不同方向观察一个物体,已经能大概知道这个物体每个部分的位置关系了。
第五点和第六点呢,继续改变姿态,从更多的角度去确定TCP的位置。
这六点合起来,就像是六把不同的钥匙,每一把钥匙都能打开一部分关于TCP位置和姿态的秘密。
pyrosim学习笔记
Layered(分层)Layered surfaces are composed of one or more material definitions. Materials includesolid andliquid substances such as concrete(混泥土), pine(松木), and ethanol(乙醇).BackingThe backing of a surface is the boundary condition behindthe surface. The default value, Air Gap represents an air gap, Exposed will allow the surface to transfer heat into the space behind the wall, and Insulated prevents any heat loss from the back of the material.Material CompositionWithin a layer (row), you can specify multiple materials based on mass fraction. For example, to specify a layer that is just brick, type 1.0 BRICK (assuming you have created a material called BRICK). To specify a layer of wet brick, you could enter 0.95 BRICK; 0.05 WATER. Each material is separated by a semi-colon.Porous(能穿透)The property is generally used to create a fan using a thin obstruction.Enable LeakageThis option allows you to select two pressure zones for leakage across the surface.Air LeakAir leak surfaces can be used to create a permeable barrier between two pressure zones. The porous option is available to allow air movement to occur across this obstructions using this surface.Adding Textures to SurfacesYou can add textures to surfaces to increase the realism of your model. Some default textures are provided or you can import your own. The Room Fire example demonstrates using a wood texture for a pine floor and hanging a picture on a wall. Your textures will be automatically displayed in PryoSim; to display textures in Smokeview, select Textures on the Show/Hide menu.To define a texture:1. On the Model menu, click Edit Surface s....2. Either create or edit the surface to which you want to add a texture.3. Click on the Texture box.4. Either select a pre-defined texture or click the Import... button and select your own image file.5. The image you selected will be displayed. Under the image, click the Details tab. Set theWidth and the Height values to correspond to size to be used in the PyroSim model.Obstruction PropertiesSmoothPrevents vorticity(漩涡)from being generated at the corners. This option is used to prevent flow problems along angled walls due to the stair-stepped(楼梯), rectilinear geometry used by FDS.Record BNDFWhen this option is selected, this object is included in boundary data output.Chapter 14. Activation EventsActivation events使用状况:1.模拟门在某个时间打开;2.模拟窗在某个时间打开;3.模拟通风系统在某个时间开启;Chapter 15. Output ControlsSolid Profiles测量固体的温度和密度。
手机软件测试工具Robotium使用
第20页
Android测试的辅助工具
MonkeyRunner
•monkeyrunner工具提供了一个API,使用此API写出的程序可以在 Android代码之外控制Android设备和模拟器。通过monkeyrunner,您可 以写出一个Python程序去安装一个Android应用程序或测试包,运行它, 向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上 。monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用 程序和设备,或用于运行单元测试套件,也可以将其用于其它目的。 •E:\Program Files\Android\android-sdkwindows\docs\guide\developing\tools\monkeyrunner_concepts.html
第10页
Robotium进行测试的方法和步骤
为测试用例编写代码
对AndroidCalculator程序进行测试,要实现的一个测试用例如下: 1)访问的第一和第二个编辑域(EditFields) 2)输入选择的测试数据 3)访问和点击multiply按钮 4)验证计算的结果是否符合预期 打开TestMain.java进行编辑并保存,见下图
•使用ADB之前
• 把tools目录下的adb.exe和AdbWinApi.dll两个文件放到系统盘的 windows/system32文件夹里 • 用数据线连接手机或者启动模拟器,然后在命令中使用adb命令
第18页
Android测试的辅助工具
Hierarchy Viewer (层级观察器)
•Hierarchy Viewer是随AndroidSDK发布的工具,位置在tools文件夹下 ,名为hierarchyviewer.bat,是Android自带的非常有用而且使用简单 的工具,可以帮助我们更好地检视和设计用户界面(UI),调试和优化你 的用户界面,是UI检视的利器。 •它可以找到我当前窗口所有的view,并可以查看每个view的属性,查看 每个控件的id,方便编写case。 •参考《UI检视利器:Hierarchy Viewer.pdf》
MOTOMAN工业机器人从入门到精通
目录1 机器人基本介绍 (5)1.1 机器人本体介绍 (5)1.2 制御盘DX200 (7)1.3示教编程器 (9)1.3.1 示教编程器 (9)1.4 P.P.按键说明 (10)1.5 P.P.画面表示 (14)1.5.1 通用显示区 (15)1.5.2 主菜单区 (23)1.5.3 状态区 (24)1.5.4 人机接口显示区 (29)1.5.5 菜单区 (29)2 机器人基本操作 (30)2.1 电源投入/切断 (30)2.1.1 注意事项 (30)2.1.2 电源投入 (31)2.1.3 电源切断 (33)2.2 关节坐标系手动操作 (35)2.3 直角坐标系手动操作 (38)2.4 圆柱坐标系手动操作 (39)2.5 工具坐标系手动操作 (41)2.5.1 工具的选择 (42)2.6 用户坐标系手动操作 (44)2.6.1 用户坐标的选择 (45)2.6.2 用户坐标使用示例 (46)2.7 外部轴 (47)2.7.1 固定控制点操作 (47)2.7.2 更改控制点操作 (50)3 示教操作与再现 (52)3.1 JOB程序操作 (52)3.1.2 程序内容 (55)3.2 点位示教 (56)3.2.1 关节插补MOVJ (58)3.2.2 直线插补MOVL (59)3.2.3 圆弧插补MOVC (61)3.2.4 自由曲线插补MOVS (64)3.3 程序修改/插入/删除 (66)3.3.1 修改 (66)3.3.2 插入 (67)3.3.3 删除 (68)3.4 再现操作 (70)3.4.1. 步骤确认 (70)3.4.2 试运行 (71)3.4.3 再现模式 (72)4 机器人变量基本介绍 (75)4.1 DX200变量种类介绍 (75)4.2 变量登录设定 (76)4.2.1 数据型变量设定 (76)4.2.2 文字型变量设定 (78)4.2.3 位置型变量设定 (80)5 程序命令编辑 (85)5.1 输出入(I/O)命令 (86)5.1.1 WAIT 输入 (87)5.1.2 DOUT 输出 (90)5.1.3 PULSE 脉冲输出 (92)5.1.4 DIN数据读取 (93)5.2 制御命令 (95)5.2.1 JUMP跳转 (95)5.2.2 CALL 呼叫副程序 (98)5.2.3 RET 返回 (100)5.2.4 TIMER 计时器 (102)5.2.6 LABEL旗标 (104)5.2.7 COMMENT 注解 (105)5.3 演算命令 (106)5.3.1 SET设定 (106)5.3.2 CLEAR 清除 (107)5.3.3 数式运算 (108)5.3.4 逻辑运算 (109)5.3.5 递增/递减 (111)5.4 平移命令 (113)5.4.1 SFTON/SFTOFF 平移 (113)1 机器人基本介绍1.1 机器人本体介绍安川YASKAWA MOTOMAN系列机器人,依照产业类别及机能特性不同,分别有多功能搬送用机器人、焊接用机器人、涂装用机器人、组立用机器人等多种不同类别,动作关节由4轴到15轴不等,本文介绍内容主要为垂直多关节机器人,各别机型请参照原厂所提供之说明书及操作文件为准。
RobotFrameWork笔记
RobotFrameWork笔记RobotFrameWork简介Robot Framework是⼀个基于Python的,可扩展的关键字驱动的测试⾃动化框架,⽤于端到端验收测试和验收测试驱动开发(ATDD)。
⼯作原理Robot Framework的基本运⾏流程如下: 1、Robot开始测试是从cmd输⼊命令,初始运⾏程序接收命令字符(主要是⽤txt或html写的测试⽤例集) 2、接收之后,robot先⽣成初始化全局变量配置,主要是定义⼀系列的字段名称和⽂件名称(例如:⽇志⽂件名称等)(由settings.py 中的类完成) 3、然后,开始解析⽤例⽂件,⽣成数据对象,数据对象中包含了测试集的各种数据,例如:测试⽤例集名称、各个测试⽤例名称、各个关键字名称等 4、再将测试数据对象传送给测试集合类处理,⽣成测试集suite对象 5、紧接着运⾏suite中的⽤例测试,然后调⽤关键字,找到关键字对应的库⽂件,进⾏操作 6、将每⼀个操作和结果都写在输出的xml⽂件中(有专门调⽤对输出xml进⾏操作的类) 7、最后待测试完成后,调⽤转换类将xml⽂件转换成相应的HTML⽇志报告,测试完成。
⽤途:web⾃动化(selenium)、接⼝⾃动化(request)、移动⾃动化(Appnium)、数据库⾃动化、持续集成⾃动化安装步骤(Python3+RobotFrameWork)1、安装Python3,配置环境变量(add to path)2、配置RFpip install pywin32pip install Pypubsub==3.3.0pip install robotframeworkpip install robotframework-ride==1.7.3.13、测试库的安装pip install robotframework-databaselibrarypip install robotframework-selenium2librarypip install –U selenium==3.4.0HTTP请求相关的库pip install requestspip install robotframework-requestspip install robotframe-autoitlibrary基础教程变量和常量 {}Scalar:⽤$作为标识符List:⽤@座位标识符变量不需要特定申明,只需要初始化赋值改变变量作⽤域Set Global Variable:设定全局级变量Set Suit Variable:设定File Suit级变量Set Test Variable:设定Case级变量环境变量⽤%{环境变量名}其它常量⽤${常量名},特殊字符常量:${/}、${:}、${False}、${None}等Scalar变量赋值最常⽤的是使⽤Set Variable 关键字对变量进⾏赋值,赋值的时候变量后⾯写不写=都可以Get赋值:主要⽤于返回值上初始化赋值:运⾏时加上-v的参数来给变量赋值变量使⽤:Rum keyword if字符串使⽤RIDE UI⾃动化使⽤介绍RIDE 接⼝⾃动化使⽤介绍依赖的库: requests、robotframework-requests,需要在测试套件的Library中导⼊requests和RequestsLibraryrequestsLibrary 常⽤的关键字有以下⼏个:Create Session: 创建⼀个 session, 连接某个服务器Create Ntlm Session: 也是创建⼀个 session , 只不过加上了域名、⽤户名、密码⽤于 NTLM 认证Get Request: 通过get ⽅式发起请求Post Request: 通过 Post ⽅式发起请求Head Request: 发送⼀个 Head 请求To Json :将⽂本转换成json 对象相关报错1、安装wxPython报版本不对错误(没安装pywin32)2、Unable to find a matching set of capabilities、Cannot capture screenshot because no browser is open (浏览器驱动没有放在Python⽬录下⾯,且浏览器驱动版本需要正确)3、pip安装时read timeout 加长等待时间 eg:pip --default-timeout=100 install pywin32。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录简介 (2)Robotium provides the following benefits: (2)Instrumentation机制 (3)Q&A (4)Does Robotium support testing on real devices?(支持真机) (4)Is it possible to write a test case that spans over 2 applications?(不支持跨App测试) (4)Can I use Robotium if I only have the apk file?(支持无源码apk测试) (5)Can I use Robotium on pre-installed applications?(支持预装App的测试,需要root) (7)Can I use Robotium with hybrid (web) applications?(4.0支持web测试) (8)Can I take screenshots from inside of Robotium?(支持截图) (8)How do I run Robotium tests from the command line?(从命令行运行测试) (8)Robotium的缺点 (8)局限性 (9)NativeDriver vs. Robotium (9)TMTS vs .Robotium vs. Android Native Driver (10)其它工具 (11)Robotium自动化测试开发环境搭建 (11)基本使用方法 (11)例1 – HelloWorld (11)例2 –官方例子 (15)ng.NoClassDefFoundError: com.jayway.android.robotium.solo.Solo错误解决 (18)例3 –测试米聊 (18)多个activity的测试 (23)测试执行 (26)对象识别 (27)uiautomatorviewer (27)API (27)无源码APK测试方法 (27)关于apk签名 (29)框架设计 (38)测试用例管理 (40)Robotium 数据驱动测试框架 (42)RemoteControl (43)介绍 (44)安装指引 (44)测试用例开发 (47)1、创建AVD (49)2、创建Java Project (49)3、在Eclipse中运行测试 (51)FAQ (53)Tips (53)参考 (54)简介/p/robotium/Robotium is a test framework created to make it easy to write powerful and robust automatic black-box test cases for Android applications. With the support of Robotium, test case developers can write function, system and acceptance test scenarios, spanning multiple Android activities.Robotium has full support for Activities, Dialogs, Toasts, Menus and Context Menus.Robotium provides the following benefits:∙You can develop powerful test cases, with minimal knowledge of the application under test.∙The framework handles multiple Android activities automatically.∙Minimal time needed to write solid test cases.∙Readability of test cases is greatly improved, compared to standard instrumentation tests.∙Test cases are more robust due to the run-time binding to GUI components.∙Blazing fast test case execution.∙Integrates smoothly with Maven or Ant to run tests as part of continuous integration.Instrumentation机制刚好前段时间也研究了一下Android的自动化测试框架。
感觉用起来还是比较方便的。
几点体会也一起和大家交流下,有一些内容还在慢慢学习中:1.Java5(2004-10)开始推出了Instrumentation,这是一个可以在main之前Java虚拟机加载类时改变Java类字节码或类classpath等内容的工具,同时JDK1.6还提供了运行过程中的动态改变,如在方法执行前后加入度量时间的代码,使Java代码可度量就是一个很典型的应用。
不过这需要涉及到Java字节码有较深入的理解进行字节码直接编辑改写,或者需要借助开源字节码项目如bcel,ASM或javassist等,以简化对字节码的操作。
2.Instrumentation与Btrace。
Btrace是基于Instrumentation和ASM的,只要理解了Instrumentation的原理和ASM对字节码的操作原理,了解Btrace就不困难了。
3.Android的测试框架robotium框架,使用的类也是Instrumentation,其原理应该也类似。
为某工程新建了一个测试工程,在安装原有工程项目时,也将测试的工程项目安装到AVD (模拟器)上面,同时通过测试的工程项目来与运行时的项目交互,触发其组件的动作等。
这种方法的缺点是要求两个项目同时安装到AVD上面。
Google将会考虑采取Remote Control 的方式实现自动化测试框架,类似于selenium的Remote Control,即在AVD上运行一个监控程序,而测试项目只需要连接这个监控程序,并发送相应的指令即可与程序进行交互,进行测试。
希望早日实现这种方式~,目前的自动化测试使用前种方法也可。
Robotium其底层仍是采用Android的Instrumentation!4.Android的Instrumentation对某个监控程序进行交互时,其大致采用如下步骤:1)启动时将项目配置文件AndroidManifest.xml文件中的instrumentation标签中的内容进行初始化,其中标明了所使用的测试运行类,目标项目的包名等2)执行测试时(可用adb命令触发),将启动目标应用的Activity,同时将待测试ActivityThread 作为一个引用进行初始化,如果找不到目标应用则会报错3)在测试时测试项目的任何对目标项目进行的操作,都会用异步的方式,将消息体放在目标程序的MessageQueue里面,这样目标程序在看到自己的MessageQueue里有内容时,就会执行之。
整个初始化过程还有待研究,关键应该是在于AndroidManifest.xml文件中内容的标识Q&Ahttps:///p/robotium/wiki/QuestionsAndAnswersDoes Robotium support testing on real devices?(支持真机)Yes it does. One just needs to connect the device to the computer and execute the tests as usual. There can be issues with some vendor customizations of Android, but many times it is possible to get around the incompatibilities by using other Robotium methods.Is it possible to write a test case that spans over 2 applications?(不支持跨App测试)No, that is not possible. In the AndroidManifest.xml you state which target application you want to test. An example of what it can look like:<instrumentation android:targetPackage="com.example.android.notepad"android:name="android.test.InstrumentationTestRunner"/>That means that the test project is locked to the targetPackage. Going outside of that target package is not allowed by the Android platform. Therefore you will need 2 test projects, one for each application.Can I use Robotium if I only have the apk file?(支持无源码apk测试)Yes you can. You do not need to have the source code. More information is found here.https:///p/robotium/wiki/RobotiumForAPKFilesWith Robotium it is possible to run test cases on applications where you only have the apk file.For step by step instructions with images download this tutorial.IntroductionThe .apk file has to have the same signature as your test project. If you do not have the signature key of the .apk file then you need to remove the signature and resign it with you own key, android debug key can be used. A drag and drop java tool can be downloaded from here which strips the apk file from its signature and then signs it with your android debug key. If the new apk is not saved then try to run the re-sign tool as an administrator. In windows that would be done by right clicking the re-sign.jar and select run as administrator. In OS X it can be done by opening up the terminal and then "sudo java -jar re-sign.jar".The android debug key is used by Eclipse when signing applications and test projects before installing them on the emulator/device. Many times it is easier to just use that key when resigning the apk.DetailsTo make this work you need to know the package name and the launcher activity name. Those can be obtained by starting the application in the emulator and whatching the logs (adb logcat). The log shows what the package name and the activity name are. An example of how the log message can look like: "Starting activity: Intent { act=android.intent.action.MAIN cat=UNCHER? flg=0x10200000cmp=com.example.android.notepad/.NotesList"That means that the package name is: com.example.android.notepad and the launcher activity name(LAUNCHER_ACTIVITY_FULL_CLASSNAME in the example below) is: com.example.android.notepad.NotesListWhen you have that information you do the following:In your test project's AndroidManifest.xml in Eclipse, set the target package to the package name you found above.Write your test class like this: (the example here is for NewsRob)package com.yourcompany.yourtestname;import com.jayway.android.robotium.solo.Solo;import android.test.ActivityInstrumentationTestCase2;@SuppressWarnings("rawtypes")public class ReallyBlackboxTest extends ActivityInstrumentationTestCase2{private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME ="com.newsrob.DashboardListActivity";private static Class<?> launcherActivityClass;static{try{launcherActivityClass =Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);}catch(ClassNotFoundException e){throw new RuntimeException(e);}}@SuppressWarnings("unchecked")public ReallyBlackboxTest()throws ClassNotFoundException{super(launcherActivityClass);}private Solo solo;@Overrideprotected void setUp()throws Exception{solo =new Solo(getInstrumentation(), getActivity());}public void testCanOpenSettings(){solo.pressMenuItem(0);}@Overridepublic void tearDown()throws Exception{solo.finishOpenedActivities();}}Can I use Robotium on pre-installed applications?(支持预装App的测试,需要root)Yes you can if you have a rooted phone. More information is found here.https:///p/robotium/wiki/RobotiumForPreInstalledApps需要root!!!重签名With Robotium it is possible to run test cases on applications that are pre-installed. For this to work you need to resign the pre-installed application with the same certificate signing of your test project. That requires you to have a rooted phone as you must have access to the/system/app folder on the device.Observe that some pre-installed applications do not function properly when re-installed with a new certificate signing. An example is the contacts application (Contacts.apk) that does not show up when re-signed.DetailsThere are some steps that you need to follow to make it work:1. Log in as root: adb root2. Remount: adb remount3. adb pull /system/app/X.apk (Replace X with the name of the application)4. Resign X.apk so that it has the same certificate signing as the test project5. adb pull /data/system/packages.xml6. Open packages.xml and remove:<package name="com.X">.....</package>7. Push packages.xml back to device: adb push packages.xml /data/system8. Restart your device9. Push the resigned X.apk back to the device: adb push X.apk /system/app10. Follow the details sectionCan I use Robotium with hybrid (web) applications?(4.0支持web测试)Yes you can. Since Robotium 4.0, applications with web content are supported.Can I take screenshots from inside of Robotium?(支持截图)Yes you can. Use takeScreenshot() to save a screenshot in "/sdcard/Robotium-Screenshots/". Observe that this functionality requires write permission (android.permission.WRITE_EXTERNAL_STORAGE) in the AndroidManifest.xml of the application under test.How do I run Robotium tests from the command line?(从命令行运行测试)By using this command:adb shell am instrument -w com.android.foo/android.test.InstrumentationTestRunnerWhere com.android.foo is the name of your test project's package. More on this can be found here.For Users Not Developing In EclipseAndroid provides tools for creating test applications using a code editor and command-line tools./tools/testing/activity_test.htmlRobotium的缺点无法对WebView进行操作Robotium提供的API是面向过程的,测试代码的可扩展性差Instrumentation框架下testapp和app运行在一个进程中,app crash会导致testapp一并crash参考:/blogs/qa?bid=13054局限性1.对于复杂的布局,目前的方法有可能无法获取所需的数据2.对于自定义的布局,必须通过导入源码的方式,调用自定义布局的方法进行验证,增加了编码的难度3.验证的方式大多数基于UI上的数据,无法检查UI布局的视觉问题。