创建测试用例
1、打开RIDE
现在我们已经把测试环境搭建完成了,来启动RIDE编辑脚本吧
现在你的桌面上应该会有一个RIDE的启动图标:
双击即可打开,如果桌面上没有也没关系,使用python 来直接执行ride.py即可,大家若果觉得每次都这样执行太麻烦了,写一个bat脚本就可以了,之前搭建环境的时候有讲到的。
2、创建测试项目
因为我们本地实际上现在是一个空白的状态,所有我们使用New Project来创建一个新项目:Suite
需要注意的__init__.txt文件,这个文件虽然看起来和python下面的__init__.py文件很像,不过在这里是做测试套件的设置用的,具体的我们后面再讲;因为我们选择的type类型为Directory所以会创建目录suite并且该该目录下会有__init__.txt文件,如果我们选择的是File则只会创建一个suite.txt文件。
3、创建测试套件
创建的过程是一步一步的,先创建项目-》创建测试套件(一个or多个)-》创建测试用例
创建套件的参数和创建项目的是类似的,区别在于创建套件的话,文件所在目录不需要我们来选择;
创建测试套件:TestcaseDemo
4、创建测试用例
大家可能已经注意到了右击不同的文件弹出的可供我们选择的列表是不同的,这就是上面跟大家讲的创建顺序(RIDE规定了我们的创建顺序)
创建测试套件:TestcaseDemo
这里解释一下force tags和default tags的区别
force tags:为suite下的所有测试用例都打上这个标签,通过这里打的标签在测试用例里面是置灰了,不可编辑的
default tags:如果suite下的测试用例没有打标签,就会打上这里设置的标签,如果测试用例已经打了标签,则不进行添加
5、引入测试库文件
Selenium2Library是我们在搭建环境的时候就已经下载完成的,之后我们还会用到更多的自定义的库文件。
库文件如果导入成功的话,字体显示为黑色,反之则为红色
导入成功后,可以按F5来查看引入类库包含有哪些关键字(也有可能出现明明关键字存在但是就是搜索不到的情况,这个时候就需要把robotframework的版本降低一下)
补充一下,如果关键字引入成功也是有可能为黑色的,这个时候把robotframework的版本降低一下即可以解决
6、编写测试用例
创建测试用例:Open Learning Log
open browser第一个参数是需要访问的网址,第二个参数为使用的浏览器,默认是Firefox,我们使用Chorme则需要填写该参数
7、执行测试用例
用例执行还有其他很多参数,之后用到再做解释;
-d C:\workspaces\SeleniumTest\log:指定输出文件的路径包括:日志、报告
–extension txt:robot:使用测试文件可以使用txt格式
8、查看测试结果
9、完善测试用例
下面是我们已经创建好的完整用例的样子,可能有小伙伴奇怪,我们明明是在RIDE上通过填表的方式来编写的用例,这个代码片段是什么呢,其实这个就是我们在RIDE上面通过表格填写后,RIDE自动帮我们生成的脚本,同理我们把这样的脚本使用RIDE打开的话,RIDE也可以展示位表格的样子(前提是脚本的格式符合RIDE的要求);
*** Settings ***
Suite Teardown close browser
Library Selenium2Library
*** Test Cases ***
Open Learning Log
open browser http://127.0.0.1:8000/ Chrome
Maximize Browser Window
click element xpath=//a[text()="登录"]
Wait Until Page Contains Element xpath=//*[text()="Log in to your account."]
input text id=id_username admin
input text id=id_password admin@123
click element name=submit
Wait Until Page Contains Element xpath=//a[text()="你好,admin."]
[Teardown] click element xpath=//a[text()="注销"]
10、测试用例元素定位方法解析
打开Chrome页面进入被测页面后点击“F12”进入开发者调试模式;
手工页面点击流程:
看到这里相信大家应该对自动化用例的元素定位有一些简单的印象了,接下来我们简单讲解一下;
在selenium自动化中所有的事务性操作(click、input、check)我们都是基于元素的,常用的定位方式有id、name、xpath等;
id、name是标签的属性这个比较简单,直接使用就可以了,Xpath的话我们可以直接拷贝,但是在公司项目中我们常常不是使用直接拷贝的xpath,因为直接拷贝的一般使用的为绝对路径,在项目还在更新的情况下,元素极易出现问题,这时候我们需要自己来写了;
//*[@id="navbar"]/ul[2]/li[1]/a
// : 固定以两个斜杆开头;
* : 表示的是标签名,这里是使用的正则
[@id="navbar"] : 代表属性值,一般为父类的(最接近的有属性的层极)
/ul[2]/li[1]/a : 代表层级关系
页面展示的text是特殊的,因为这个text并不是标签的属性值,所以使用的是:[text()="**"]
有时候控件有多个属性不好定位,我们也可以使用and或者or
[@id="id" and name="name"]
[@id="id" or name="name"]
我们定位的时候元素也有可能包含一些变量或者特殊字符的情况出现,这个时候我们可以使用contains来定位元素,可以直接定位出包含指定属性的元素出来
//*[contains(@id, "id") ]
//a[contains(text(),'automates browsers. Th')]
自己写好的定位需要在页面进行一些校验才可以使用,在界面查找一下如果有且只有一个,那我们就写好了一个可以唯一定位的元素了;
11、RIDE运行问题修改
1、RIDE中文乱码修改
大家运行测试用例的时候是否会像我一样在日志输出中出现中文乱码的情况呢;
(1) 找到目录:C:\Python\Python37\Lib\site-packages\robotide\contrib\testrunner下的testrunnerplugin.py文件。
(2) 修改第565行,把encoding[‘SYSTEM’])改为encoding[‘OUTPUT’])
(3) 重启ride工具,再运行一下,出现乱码的问题就解决了;