在用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模块的__init__.py文件
def __init__(self,timeout=5.0,implicit_wait=0.0,run_on_failure='Capture Page Screenshot',screenshot_root_directory=None):

timeout


有几个Wait …关键字都有一个可选的timeout参数,可以将这个参数设置为全局变量,使Selenium2Library共用同一个timeout时间,同时这个timeout时间也支持异步执行Javascript关键字-Execute Async Javascript
该参数的默认值为5.0,即全局的超时时间为5秒。看一下下面这个简单的126邮箱登录退出测试用例:

*** Settings ***
Library           Selenium2Library*** Test Cases ***
loginOpen Browser    http://www.126.comInput Text    id=idInput    emailfortest2016Input Password    id=pwdInput    111112Click Element    id=loginBtnWait Until Element Is Visible    link=退出Click Element    link=退出Close Browser

在默认的timeout参数下,该用例可以正确执行,当通过以下方式改变timeout参数值为0时,用例都会执行失败:

  • 导入Selenium2Library库时,设置timeout参数值为0。
*** Settings ***
Library           Selenium2Library    timeout=0*** Test Cases ***
loginOpen Browser    http://www.126.comInput Text    id=idInput    emailfortest2016Input Password    id=pwdInput    111112Click Element    id=loginBtnWait Until Element Is Visible    link=退出Click Element    link=退出Close Browser
  • 在测试用例中通过关键字Set SeleniumTimeout设置参数值为0。
*** Settings ***
Library           Selenium2Library*** Test Cases ***
loginOpen Browser    http://www.126.comInput Text    id=idInput    emailfortest2016Input Password    id=pwdInput    111112Click Element    id=loginBtnSet Selenium Timeout    0Wait Until Element Is Visible    link=退出Click Element    link=退出Close Browser
  • 在使用Wait Until Element IsVisible关键字时指定timeout参数值为0。
*** Settings ***
Library           Selenium2Library*** Test Cases ***
loginOpen Browser    http://www.126.comInput Text    id=idInput    emailfortest2016Input Password    id=pwdInput    111112Click Element    id=loginBtnWait Until Element Is Visible    link=退出    timeout=0Click 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 ***
loginOpen Browser    http://www.126.comInput Text    id=idInput    emailfortest2016Input Password    id=pwdInput    111112Click Element    id=loginBtnClick Element    link=退出Close Browser

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

*** Settings ***
Library           Selenium2Library    implicit_wait=5*** Test Cases ***
loginOpen Browser    http://www.126.comInput Text    id=idInput    emailfortest2016Input Password    id=pwdInput    111112Click Element    id=loginBtnClick Element    link=退出Close Browser

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

*** Settings ***
Library           Selenium2Library*** Test Cases ***
loginOpen Browser    http://www.126.comInput Text    id=idInput    emailfortest2016Input Password    id=pwdInput    111112Click Element    id=loginBtnSet Selenium Implicit Wait    5Click Element    link=退出Close Browser

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

run_on_failure


当Selenium2Library某个关键字执行失败时将指定运行关键字run_on_failure。
默认可以使用Capture Page Screenshot来截取当前页面内容。使用值’Nothing’可以完全禁用该功能。

screenshot_root_directory


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

robotframework-selenium2library-导入可选参数相关推荐

  1. C# 4.0中对Office编程的预览和对可选参数的体验

    最近随着VS2010 beta2的发布,有机会体验了一下C# 4.0中的很多新特性,这里对官方提供的一个简单的实例进行了一下分析,因为我的2010跑在win7上新建所有的Windows项目都会无响应, ...

  2. 如何定义带有可选参数的函数python_Python如何定义有可选参数的元类

    问题 你想定义一个元类,允许类定义时提供可选参数,这样可以控制或配置类型的创建过程. 解决方案 在定义类的时候,Python允许我们使用 ``metaclass``关键字参数来指定特定的元类. 例如使 ...

  3. php laravel用的多不,php-Laravel多个可选参数不起作用

    在使用带有2个可选参数的路线时, Route::get('/abc-{abc_id?}/xyz-{xyz_id?}', function($abc_id=0, $xyz_id=0) { return ...

  4. [读书笔记]C#学习笔记七: C#4.0中微小改动-可选参数,泛型的可变性

    前言 下面就开始总结C#4.0的一些变化了, 也是这本书中最后的一点内容了, 这一部分终于要更新完了. 同时感觉再来读第二遍也有不一样的收获. 今天很嗨的是武汉下雪了,明天周六,一切都是这么美好.哈哈 ...

  5. 《CLR Via C# 第3版》笔记之(十) - 可选参数和可变数量参数

    C#中也可以像动态语言那样,定义可选参数和可变数量参数.通过使用可选参数和可变数量参数可以构建更加灵活的函数. 主要内容: 可选参数 可变数量参数 1. 可选参数 可选参数即调用函数时,传递参数的个数 ...

  6. C#可选参数、命名参数、参数数组

    学习了C#4.0的新特性:可选参数.命名参数.参数数组. 1.可选参数,是指给方法的特定参数指定默认值,在调用方法时可以省略掉这些参数. 但要注意: (1)可选参数不能为参数列表的第1个参数,必须位于 ...

  7. c# 可选参数与命名实参

    c#4.0: 链接:C# 可选参数 命名参数 转载于:https://www.cnblogs.com/lbonet/p/7249601.html

  8. php6 配置,thinkphp6路由可选参数配置

    thinkphp6 路由可选参数配置后#0 [0]InvalidArgumentException in Container.php line 455 方法参数错误:id 路由配置参考手册如下 可选变 ...

  9. 【Flutter】Dart 面向对象 ( 类定义 | 类的继承 | 私有变量 | 可选参数 | 默认参数 | 初始化列表 )

    文章目录 一. Dart 面向对象 二. 类定义 三. 类的继承 四. 私有变量 五. 可选参数与默认参数 六. 初始化列表 七. 完整代码示例 八. 相关资源 一. Dart 面向对象 OOP 基本 ...

  10. 精进不休 .NET 4.0 (4) - C# 4.0 新特性之命名参数和可选参数

    [索引页] [源码下载] 精进不休 .NET 4.0 (4) - C# 4.0 新特性之命名参数和可选参数, 动态绑定(dynamic), 泛型协变和逆变, CountdownEvent, Barri ...

最新文章

  1. angular2 学习二 最简单的模板
  2. 十六进制时间戳转换成十进制时间戳
  3. Eclipse 4.9 正式发布,支持 Java 11!
  4. 北京大学Cousera学习笔记--3-计算导论与C语言基础-第一讲.计算机的基本原理-计算机怎么计算-数的二进制...
  5. Eclipse安装以及JDK环境变量配置
  6. 【TensorFlow】TensorFlow函数精讲之tf.get_variable()和tf.get_variable_scope()
  7. python def函数报错详解_python自定义函数def的应用详解
  8. 吴恩达深度学习5.2练习_Sequence Models_Emojify
  9. 大工18秋计算机文化基础在线测试2,大工18秋《计算机文化基础》在线测试2
  10. iOS 很酷的动画效果
  11. DataSet与XML导入导出方法
  12. 2021年全国火车站点shp数据包含高铁站货运站arcgis字段属性有名称(+预览图)
  13. 文件粉碎机c语言代码,VB写文件粉碎机
  14. 【论文笔记08】Model inversion attacks that exploit confidence information and basic countermeasures 模型反转攻击
  15. 输入今天日期输出明天日期
  16. Transformer翻译模型Decoder详解(Masking)
  17. Chrome图片批量下载扩展-zzllrr imager V1.4
  18. Innodb的七种锁
  19. CTYZ的树论赛(P5557 旅行/P5558 心上秋/P5559 失昼城的守星使)
  20. 【IoT】 产品设计:硬件产品设计流程ID与MD设计详解(二)

热门文章

  1. 计算机主机和音箱之间的接口电路是(),《多媒体技术及应用》按章复习题
  2. 华硕afudos刷bios_华硕M2N-MX SE PLUS主板 如何用afudos命令刷BIOS
  3. macOS苹果电脑下载m3u8、ts视频
  4. 图论及其应用 2013年期末考试 答案总结
  5. python3简单爬取妹纸图网站图片
  6. java ssm旅游网站系统源码jsp maven项目推荐
  7. 火力发电行业三大知识图谱应用场景,助力火力发电厂清洁高效智慧化运营
  8. android大智慧安装目录,大智慧文件目录
  9. 安卓开发之ListView优化方案
  10. CommandName 限制