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

时间:2014-01-07 06:48:34

标签: python selenium selenium-webdriver robotframework

*** 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

2 个答案:

答案 0 :(得分:6)

我看到了两种方法。

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

答案 1 :(得分:0)

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

我刚写了一个程序,它将读取文件settings.txt并找到行@{BROWSER} firefox chrome IE 然后提取浏览器名称并存储到列表中。所以这个脚本会返回一个像这样的List ['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