我们如何在机器人框架中一次通过不同的浏览器

Posted

技术标签:

【中文标题】我们如何在机器人框架中一次通过不同的浏览器【英文标题】:How can we pass different browser at once in robotframework 【发布时间】:2014-01-24 18:41:21 【问题描述】:
*** Variables ***

$BROWSER          firefox
$URL              http://url/
$Delay            0  

在我的 settings.txt 文件中,我有一个名为 BROWSER 的变量并且关联值如上所示,它是 firefox

但我想要的是

*** Variables ***

@BROWSERS         firefox  chrome  IE  
$URL              http://url/
$Delay            0  

类似上面的东西...所以当我首先运行测试套件时,它将在 Firefox 中运行,在完成所有测试用例后,它将关闭 Firefox 并打开 chrome 并在 chrome 浏览器上再次运行所有测试用例......等等在此之后它将在 IE 上运行

那么我们该怎么做呢?

我不想手动进行(我的意思是逐个传递或编辑 txt 文件)。 全自动....一旦我运行测试,它将自动在所有浏览器中进行测试。

PS:这是在 settings.txt 文件中,我有两个文件夹,其中有 test.txt 文件。所以有一个主要问题..我必须循环迭代这些文件夹

|-- main.py
|-- settings.txt    //in this file i have browser variable (or Array)
|-- test1
|   |-- testl.txt
|   |-- test1_settings.txt  //this will contain all the variables and user defined keyword related to test1 and 
|-- test2
|   |-- test2.txt    
|   |-- test2_settings.txt  //same as test1

我运行这样的测试用例 $pybot test1 test2

【问题讨论】:

【参考方案1】:

我看到了两种方法。

1) 循环浏览您的浏览器并调用一个关键字来进行测试:

*** Variables ***
@BROWSERS          firefox  chrome  IE

*** test cases ***
test with several browser
    :FOR  $browser  IN   @BROWSERS
    \  log to console  call keyword that does your test with $browser

这是您通过此测试得到的结果:

[Mac]$ pybot .
Browser.Ts
==============================================================================
test with several browser                                             
call keyword that does your test with firefox
call keyword that does your test with chrome
call keyword that does your test with IE
test with several browser                                             | PASS |
------------------------------------------------------------------------------
Browser.Ts                                                            | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================

2) 另一种方法(我更喜欢)是使用单个值保留您的 $BROWSER 变量,并使用您在命令行中提供的变量的新值多次调用您的测试用例:

[Mac]$ pybot --variable BROWSER:firefox ts.txt
[Mac]$ pybot --variable BROWSER:chrome ts.txt
[Mac]$ pybot --variable BROWSER:ie ts.txt

【讨论】:

解决方案 2 应该可以,不是吗?这就是我做那种事情的方式,我很高兴。我使用 Jenkins 启动了我的测试,并且我要测试的每个配置都有 1 个作业。【参考方案2】:

好的,我想我已经通过编写一个简单的脚本解决了这个问题。

我刚刚编写了一个程序,它将读取文件 settings.txt 并找到 @BROWSER firefox chrome IE 行 然后提取浏览器名称并存储到列表中。所以这个脚本将返回一个类似这样的列表 ['firefox', 'chrome', 'IE']

现在我将在循环中使用它而不是使用单个 pybot 命令

for browser in browsers:
        call(['pybot','--variable'] +['BROWSER:%s'%browser] + test_args) 

settings.txt 文件将包含两个变量

$BROWSER          firefox      #So default browser is firefox. you can leave it blank
@BROWSERS         firefox  chrome  IE

【讨论】:

以上是关于我们如何在机器人框架中一次通过不同的浏览器的主要内容,如果未能解决你的问题,请参考以下文章

Robot Framework-Test setup Teardown 具体到测试用例

如何在机器人框架中关闭浏览器插件警报

9.0系统机器不用Root激活XPOSED框架经验

如何在机器人框架中实现并行执行

深入剖析机器学习框架平台Pegasus

如何通过 REST API 为连接到 Microsoft Teams 频道的机器人获取机器人 ID 和用户 ID