date:2018520 day09
一.学习环境
1.安装python27
2.安装robotframework(cmd→【pip install robotframework】)
3.安装WxPython(wxPython是python的一个GUI库,RIDE是基于wxPython开发)
python3.7版本下,安装wxpython wxPython下载安装教程
4.安装robotframework-ride(cmd→【pip install robotframework-ride】)(RIDE是一个用于创建、组织、运行测试的图形界面软件)
5.安装selenium2library(cmd→【pip install robotframework-selenium2library】)
二.如何打开
cmd→ride.Py
可能遇见的问题1:‘ride’不是内部或外部命令...
解决方法:在X:\Python27\Script路径下找到ride.py,以python.exe方式运行。如我的路径就是C:\Python27\Scripts\ride.py
打开后如下图:

三.Ride的使用
1.新建项目(File→New Project)(Type要选Directory)
2.新建测试套件(项目名→New Suite)
右边一栏可以导入Library、Resource

3.新建文件夹(项目名→New Directory)
4.新建测试资源(项目名→New Resource)
套件与测试资源区别:测试资源没有New Test Case,但是资源里面的Keyword、Scalar(变量)能被套件引用,测试套件里的关键字(函数)只有套件里的用例才能使用。
如何引用测试资源:在套件里右边有一栏,点击,在path里输入Keyword所在的资源名(带上'.txt');被引用的资源就会被点亮。

5.新建测试用例(套件名→New Test Case)
Setup:前置条件,要运行测试用例所要做的工作
Teardown:执行完测试用例后的操作
Tags:标签
Timeout:超时

Arguments:根据输入来保存测试报告,测试日志
-d:保存的路径 -r:报告保存的名字 -l:日志保存的名字 -o 输出文档


Only run tests with these tags是根据输入的标签来运行;Skip tests with these tags是跳过输入的标签来运行

6.新建关键字(函数,方法)(套件名→New User Keyword)
要给关键字(函数)传值,在Arguments里加入参数,多个参数用‘|’隔开;

如果关键字(函数)要有返回,在Return Value里加入返回,多个返回用‘|’隔开;

关键字(函数)里有Documentation,是用于描述关键字(函数)的。

关键字(函数)的方法体

调用关键字(函数):带上Keyword名即是调用(后面有两个红框,代表要传两个参数)

四.基础知识
1.变量
Way1:新建变量(项目名/套件名→New Scalar)

Way2:在用例中新建内部变量——set variable
Way3:在用例中新建套件变量——set suite variable(在同个套件中都能使用的变量。声明变量的用例和调用套件变量的用例要同时运行,且声明变量的用例要在调用套件变量的用例的上面)
Way4:在用例中新建全局变量——set global variable(在整个项目中都能使用的变量。声明变量的用例和调用全局变量的用例要同时运行,且声明变量的用例要在调用全局变量的用例的上面)

2.Evaluate
Evaluate是执行python表达式,并返回执行结果

随机数:
要导入random,在代码后面加导入库

开平方:

3.if语句——Run Keyword If
Run Keyword If为关键字不区分大写、小写;但是else if以及else必须大写;
‘...’表示链接上一层
※与Run keyword if相反,有一个关键字Run keyword unless (当不满足条件时,执行后面的语句)


4.for语句——:FOR
for语句下面要空(缩进)一格,代表在for语句里面;
FOR、IN RANGE要大写


遍历自定义列表:
create list——创建list;
遍历列表必须用@{};
用if语句证明相等,前后两个值是字符,都要用引号标出来;

创建字典:
Create Dictionary是内置keyword;
要使用Get From Dictionary(根据key,获得value)关键字,套件必须导入Collections


5.should be equal:关键字,判断是否相等

6.run keyword and return status:关键字,运行关键字并返回状态

7.String库(remove string关键字):
首先在套件中导入Sting库,然后就可以使用String里的Remove string

8.Import Library(BuiltIn关键字):
Import Library 库名 的作用效果与Library 库名效果一样,但是Import Library后不能ctrl+shift+空格 查看库中的关键字。


五.Tips
1.快捷键ctrl+1=${}
2.快捷键ctrl+2=@{}
3.快捷键ctrl+3=注释
4.快捷键ctrl+4=取消注释
5.按F5键 Search Keywords
6.按F3键 Search Tests
7.库名.关键字=关键字

自动变量链接:https://www.cnblogs.com/chengchengla1990/p/7056541.html
RF新手常见问题:https://blog.csdn.net/yutianxu1986/article/details/77774954
六、实操
1.较精准定位

2.关于Appium+RF的轴表达式
child:选取当前节点的所有子元素
parent:选取当前节点的直接父元素
descendant:选取当前节点的所有后代元素
ancestor:选取当前节点的所有先辈元素
preceding:选取当前节点之前的所有节点
preceding-sibling:当前节点之前的所有同级节点
following:选取当前节点之后的所有节点
following-sibling:当前节点之后的所有同级节点

3. /. 与 /..
/. :表示当前目录
/.. :表示上一级目录



4. Unselect frame

其中已进入一个frame(非主frame),要想进入另一个frame时,必须使用关键字Unselect frame退回主frame才可进入另一个frame
5.contains 与 not contains
6.Appium(简单点说,Selenium是web端的自动化,Appium是app端的自动化)
Appium是一个自动化测试开源工具,支持iOS和android平台上的移动原生应用、移动Web应用和混合应用。Appium是一个跨平台工具,它允许测试人员使用同样的接口、基于不同的平台写自动化测试代码,大大增加了测试套件间代码的复用性。
- 移动原生应用:是指那些用iOS或者android sdk写的应用;
- 移动web应用:是指那些使用移动浏览器访问的应用,appium支持iOS的safari和android上的chrome;
- 混合应用:是指原生代码封装在网页视图(原生代码和web内容交互)。
——以上来自https://blog.csdn.net/zytthappy/article/details/79686354
7.Android system webview 与 chromedriver
appium通过chromedriver驱动webview,因此需要android system webview 与chromedriver版本相对应。
有关android webview与chromedriver更多知识:https://www.cnblogs.com/sao-fox/p/6396984.html
其中,WebView是一个用来显示Web网页的控件
8.RobotRemoteServer
robotremoteserver是一种远程库接口技术(remote library interface)。我们知道当我要使用的Robot Framework的库是被安装在..\Python27\Lib\site-packages\目录下面的。例如常用的Selenium2Library。但robotremoteserver就可以启动一个Library给Robot Framework用,不管这个库在本机的任何位置,或远程的某台主机上,或者这个库不是Python开发的。
——以上来自https://www.cnblogs.com/fnng/p/4960697.html
9.Get Element Attribute

10.List Variable
在@{list}被赋值而${list}没被赋值的情况下,系统会默认${f}是@{f}的Scalar形式。
在${list}被赋值而@{list}没被赋值的情况下,但它并不会默认@{f}是${f}的list形式。
List variable与 Scalar: https://blog.csdn.net/tulituqi/article/details/7907981
Append to list关键字: https://blog.csdn.net/tan10076/article/details/80433880

11.int() str() 及计算list长度

计算list长度

