zoukankan      html  css  js  c++  java
  • Robot framework 引入 Selenium2Library 类库:

    在用robotframework-selenium2library做web自动化测试时候,首先要将Selenium2Library导入到Test Suite中,在导入Selenium2Library时可以指定以下可选参数:

    • timeout=5.0
    • implicit_wait=0.0
    • run_on_failure=Capture Page Screenshot
    • screenshot_root_directory=None
    • 导入Selenium2Library库时,设置timeout参数值为0。
    *** Settings ***
    Library           Selenium2Library    timeout=0
    
    *** Test Cases ***
    login
        Open Browser    http://www.126.com
        Input Text    id=idInput    emailfortest2016
        Input Password    id=pwdInput    111112
        Click Element    id=loginBtn
        Wait Until Element Is Visible    link=退出
        Click Element    link=退出
        Close Browser
    

      

    • 在测试用例中通过关键字Set SeleniumTimeout设置参数值为0。
    *** Settings ***
    Library           Selenium2Library
    
    *** Test Cases ***
    login
        Open Browser    http://www.126.com
        Input Text    id=idInput    emailfortest2016
        Input Password    id=pwdInput    111112
        Click Element    id=loginBtn
        Set Selenium Timeout    0
        Wait Until Element Is Visible    link=退出
        Click Element    link=退出
        Close Browser
    

      

    • 在使用Wait Until Element IsVisible关键字时指定timeout参数值为0。
    *** Settings ***
    Library           Selenium2Library
    
    *** Test Cases ***
    login
        Open Browser    http://www.126.com
        Input Text    id=idInput    emailfortest2016
        Input Password    id=pwdInput    111112
        Click Element    id=loginBtn
        Wait Until Element Is Visible    link=退出    timeout=0
        Click Element    link=退出
        Close Browser
    

      

    如果三种方式对timeout参数设置了不同的值,根据就近原则关键字参数中设置的timeout参数会对当前关键字生效,但是通过导入参数和通过Set SeleniumTimeout设置参数改变的是全局的timeout值。 
    个人认为在实际的通常项目的测试过程中全局默认的5s超时时间比较合理,所以不需要在导入Selenium2Library库时指定timeout参数,也不需要通过Set SeleniumTimeout在测试用例中修改timeout参数值,当特殊的测试测试步骤或者测试场景需要修改timeout参数值时,可以通过在关键字中指定timeout参数值使其在局部生效。

    implicit_wait


    implicit_wait是selenium查找元素时的一个隐含超时时间,默认值为0。对上面的用例做一点修改,不采用Wait Until Element Is Visible来判断元素是否可见,而直接操作元素,用例脚本如下:

    *** Settings ***
    Library           Selenium2Library
    
    *** Test Cases ***
    login
        Open Browser    http://www.126.com
        Input Text    id=idInput    emailfortest2016
        Input Password    id=pwdInput    111112
        Click Element    id=loginBtn
        Click Element    link=退出
        Close Browser
    

      

    执行测试用例时会报查找不到元素的错误,因为在执行Click Element link=退出 时页面还没加载完成,implicit_wait的值为0,selenium在查找不到元素时立刻返回错误。 
    我们在导入selenium库时将implicit_wait设置为5秒,用例脚本如下:

    *** Settings ***
    Library           Selenium2Library    implicit_wait=5
    
    *** Test Cases ***
    login
        Open Browser    http://www.126.com
        Input Text    id=idInput    emailfortest2016
        Input Password    id=pwdInput    111112
        Click Element    id=loginBtn
        Click Element    link=退出
        Close Browser
    

      

    再次执行用例脚本可正常执行。 
    也可以通过关键字Set Selenium Implicit Wait来设置全局的implicit_wait值,如下用例脚本也能正常执行。

    *** Settings ***
    Library           Selenium2Library
    
    *** Test Cases ***
    login
        Open Browser    http://www.126.com
        Input Text    id=idInput    emailfortest2016
        Input Password    id=pwdInput    111112
        Click Element    id=loginBtn
        Set Selenium Implicit Wait    5
        Click Element    link=退出
        Close Browser
    

      

    个人认为在实际测试过程中不需要设置implicit_wait值,在对页面或者元素进行操作前都通过Wait …关键字先判断页面是否加载完成或者元素是否可见,这样测试脚本的健壮性会更好。

    run_on_failure


    当Selenium2Library某个关键字执行失败时将指定运行关键字run_on_failure。 

    *** Settings ***
    Library           Selenium2Library       run_on_failure=Capture Page Screenshot
    

    默认可以使用Capture Page Screenshot来截取当前页面内容。使用值’Nothing’可以完全禁用该功能。

    screenshot_root_directory


    screenshot_root_directory指定了Capture Page Screenshot关键字截取页面图片的存放路径。如果没有指定那么截图图片会默认存放在robotframework日志文件存放路径。

  • 相关阅读:
    mybatis 查询list,内容为null,但list的size 为1
    mysql 父子表 注意事项
    导入
    php生成签名及验证签名
    PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名的理解
    PHP 做 RSA 签名 生成订单(支付宝例子)
    接口安全调用该怎么做?签名?证书?服务安全?
    PHP 以POST方式提交XML、获取XML,最后解析XML
    php 解析xml 的四种方法
    php 模拟POST提交的2种方法
  • 原文地址:https://www.cnblogs.com/saryli/p/7365247.html
Copyright © 2011-2022 走看看