【robotframework之七】框架设计之分层

一、前言

      我们在设计用例时,都知道一个功能可以引申出很多的用例,如登录功能,我们设计时会考虑用户名密码为空、密码错误、密码正确等等情况,每一种情况都可以形成一条用例,如果要写一个比较精细的自动化脚本,我们也应该要把各种情况都考虑进去。

     我们知道,网站不会是一成不变的,我们经常会需要进行版本迭代,这样可能会导致我们自动化脚本中的元素等发生变化,如果不进行分层,每一条用例都引用变化的元素,那么当某一天,该元素真的发生了变化时,维护脚本是一件很大的工作量,也有可能出现漏改的情况,导致自动化的成本大幅提升,这样就有违我们利用自动化提高工作效率降低成本的初衷;这样的情况下,各种框架就应运而生,这一节我们就介绍一种简单的框架,分层;即将元素和数据分离出来,每一条用例都去引用分离出来的元素,当元素发生变化时,我们只需要更改元素即可,用例则不需要变动,既减轻了工作量又减少了失误。

 

二、梳理登录流程

以登录Csdn为例,流程如下:

1、打开浏览器并进入登录页面

2、点击账号登录进入账号登录栏

3、输入用户名

4、输入密码

5、点击登录

6、验证登录是否成功

7、关闭浏览器

 

三、实战

1、创建一个project

【robotframework之七】框架设计之分层_第1张图片

2、在project下创建suite

【robotframework之七】框架设计之分层_第2张图片

3、在suite下创建Test Case

【robotframework之七】框架设计之分层_第3张图片

4、在project下面创建resource

【robotframework之七】框架设计之分层_第4张图片

5、在resource导入library,所有关键字需要用到的库都在这里导入

【robotframework之七】框架设计之分层_第5张图片

6、根据第二步的登录流程创建关键字,在resource下面创建User keyword

【robotframework之七】框架设计之分层_第6张图片

7、根据登录流程创建的关键字完成

【robotframework之七】框架设计之分层_第7张图片

8、在suite导入resource

【robotframework之七】框架设计之分层_第8张图片

【robotframework之七】框架设计之分层_第9张图片

9、编写登录的脚本

【robotframework之七】框架设计之分层_第10张图片

10、当需要进行登录异常,如密码错误等脚本编写时,新建一个testcase引用关键字即可;另外,当元素有变动时,也不需要一个一个testcase的改,只需要更改关键字的相关元素即可。

 

四、完整的代码

 

keywordOper

*** Settings ***
Library           Selenium2Library

*** Keywords ***
打开浏览器
    [Arguments]    ${url}
    Open Browser    ${url}    Chrome

点击账号登录
    Click Element    //a[contains(.,'账号登录')]

输入用户名
    [Arguments]    ${username}
    Input Text     id=all    ${username}

输入密码
    [Arguments]    ${password}
    Input Password    id=password-number    ${password}

点击登录
    Click Element    	//button[contains(.,'登录')]

验证登录是否成功
    [Arguments]    ${assertname}
    Page Should Contain    ${assertname}

关闭浏览器
    Close All Browsers

login

*** Settings ***
Resource          keywordOper.html

*** Test Cases ***
login
    打开浏览器    https://passport.csdn.net/login
    点击账号登录
    输入用户名    youxitou
    输入密码    123456
    点击登录
    验证登录是否成功    youxitou
    关闭浏览器

 

你可能感兴趣的:(robotframework)