zoukankan      html  css  js  c++  java
  • robot 学习笔记

    自动化测试框架选择: Robot Framework+Selenium2Library

    Robot 总共支持四种表,分别为:Settings, Variables, Test Cases, Keywords。
    测试套件(suite) 也就是测试用例(case)的集合.
    Setup 环境初始化 、teadown 清除
    Python的import 和 这里的Library 一样是用来引入库的。
    导自定义包用Resource + 目录文件名

    1.新的关键字写在Keywords区域下面, 语法和写一个测试集相似。主要的区别是你可以给你自己设定的关键字传递任意的参数。例如Login关键字通常会得到一对username 和 password的参数,然后将所有的实现方法隐藏起来。如果你的keywords特别多,或者你想让你的自定义keywords更加容易的重复使用,你可以将keywords定义块放在一个resource文件中,然后在setting中导入这个文件,如下
    ***Settings***
    Resource resource-2.txt

    2.除了 基本的新建keywords的用法,你还可以在keywords块定义Setup和Teardown.
    *** Settings ***
    Suite Setup Setup Actions
    Suite Teardown Teardown Actions
    *** Test Cases ***
    Test Robot Framework Logging
    Log Test Logging
    *** Keywords ***
    Setup Actions
    Log Setup Actions done here
    Teardown Actions
    Log Teardown Actions done here

    3.Tagging 标签
    这个和keywords关系不大,就是在读测试报告的时候比较方便看出你在测什么。
    *** Test Cases ***
    Test Robot Framework Logging
    [Tags] sample logging
    Log "Test Logging"

    4.有关Setup和Teardown的使用:
    Test Setup Teardown : suite套件下的cases本身没有setup和teardown时才执行。有就执行本身的setup和teardown.
    Suite Setup Teardown :进入和退出这个Suite执行用例前后必须分别执行一次。

    5.*** Variables ***
    个人理解是配置本文件下的全局变量。

    6. 类似蓝图,导自定义包
    *** Settings ***
    Resource ./PageObjects/LandingPage.robot
    *** Keywords ***
    Search for product
    LandingPage.Page Load

    7. robotframework 几种set variable 的区别:
    Set Global Variable 在所有测试套件中都可以使用此关键字定义的变量
    Set Suite Variable 使用此关键字设置的变量在当前执行的测试套件的范围内随处可用。
    Set Test Variable 使用此关键字设置的变量在当前执行的测试用例的范围内随处可用
    Set Variable 该关键字主要用于设置标量变量。此外,它可用于将包含列表的标量变量转换为列表变量或多个标量变量。建议在创建新列表时使用创建列表。使用此关键字创建的变量仅在创建它们的范围内可用。

    8.Scalar变量用$ 作为标识符,List型变量用 @ 作为标识符 dict型变量用 & 作为标识符。
    dict 例如 &{GLOBAL_USER} name=root password=abc123
    取值 &{GLOBAL_USER}[name]
    list 例如 @{another_list} = Create List I am another list
    @{MY_LIST_VARIABLE} I am list
    sca 例如 ${MY_GLOBAL_SCALAR} I am Global

    9.*** Keywords ***下可以写函数接口,接收参数,*** Test Cases ***下调用接口,可以传参。
    例如:
    *** Test Cases ***
    Passing Scalar Variables
    Begin Web Test with Scalar http://www.google.com chrome

    *** Keywords ***
    Begin Web Test with Scalar
    [Arguments] ${url} ${browser}
    open browser ${url} ${browser}
    Close Browser

    10.comment 注释 comment My note during test
    run keyword and continue on failure 测试case失败继续进行下一个
    repeat keyword 4 Times Say something 重复操作

    11.Dialogs 库 用作用户交互;
    关键字:
    Execute Manual Step 用户选择PASS OR FALL
    Get Selection From User 用户选择
    Get Value From User 用户输入
    Pause Execution 暂停测试

    12.switch to window 切换window窗口

    13.SSHLibrary 库 呃。。理解为socket通信
    Open Connection ${HOST} timeout=1 hour
    Login ${USER} ${PASSWORD}
    Execute Command 在远程机器上执行命令
    Should Contain a b ##a中是否包含b
    close connection

    19.SSHLibaray 以秘钥登录环境
    Login With Public Key root /root/.ssh/id_rsa AUTH_KEY

    14.RequestsLibrary 用做http请求
    Create Session
    Get Request
    Delete All Sessions


    15.Should Be Equal as strings a b 转化为字符串a和b相等

    16. 测试套件也可以导入py文件使用

    17.自定义.py 中声明的__all__中没有的,不能称为keywords,不能找到会ERROR

    18.Log 就是print
    Log to console 将message打印到控制台

    19.以秘钥登录环境
    Login With Public Key root /root/.ssh/id_rsa AUTH_KEY

    20.[Arguments] 传入的参数

    21.IF ELSE使用 : 要加 ... ##语法
    [Arguments] ${variable}
    Run Keyword If ${variable} == 10
    ... log to console ${variable} 0
    ... ELSE IF 0 < ${variable}
    ... log to console ${variable} 1
    ... ELSE
    ... log to console 1111

    22.BulidIn 库共有30个关键字:
    Catenate
    Get Length
    Length Should Be
    Should (Not) Be Empty
    Should (Not) Be Equal (As Strings/Integers/Numbers)
    Should (Not) Match (Regexp)
    Should (Not) Contain
    Should (Not) Start With
    Should (Not) End With
    Convert To String
    Convert To Bytes

    23. 自动登录 元素定位分为id,name,xpath,css,jQuery,sizzle
    (1)xpath 绝对路径比较简单一级一级找:xpath= /html/body/div[1]/div[2]/div[1]/div[1]/form/span[1]/input
    (2)xpath 相对路径最基本元素本身找:xpath=//input[@id=”kw” ] 或者xpath=//*[@id=”kw” ]
    //input表示匹配input标签的所有元素
    //*表示匹配所有元素的标签
    当然不限于用id,也可以xpath=//*[@type=”text”]
    注意:要保证这些元素可以唯一的识别一个元素

    会这两种差不多就可以解决大部分的元素定位了,再解决不了的就加上布尔

    24. collection库是操作列表和字典的。、

    25.xpath 学习 (w3school)
    / 从根节点选取
    // 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置
    . 选取当前节点
    .. 选取当前节点的父节点
    @ 选取属性

    谓语:用来查找某个特定节点或者包含某个指定的值得节点,谓语卸载[ ]中

    通配符: *

    管道符 :|

    一些例子:
    "//input[@*='fuck']"));//匹配所有input元素中含有属性的值为fuck的元素
    "//input[start-with(@id,'fuck')]"));//匹配id以fuck开头的元素,id='fuckyou'
    "//input[ends-with(@id,'fuck')]"));//匹配id以fuck结尾的元素,id='youfuck'
    "//input[contains(@id,'fuck')]"));//匹配id中含有fuck的元素,id='youfuckyou'
    //a[text()='百度搜索'] 准确定位
    //a[contains(text(),"搜索")] 模糊定位

  • 相关阅读:
    Linux makefile 教程 非常详细,且易懂
    PCRE函数简介和使用示例
    Eclipse常用快捷键汇总
    vc6.0 调用ocx控件
    理解串口流控
    c++ xml markup
    unresolved external symbol __endthreadex错误解决(
    Android自动化~1
    数据库左连接,右连接,内连接,外连接
    Linux常用指令
  • 原文地址:https://www.cnblogs.com/WHWWHW/p/12320806.html
Copyright © 2011-2022 走看看