How can we pass different browser at once in robotframework

大城市里の小女人 提交于 2019-12-04 18:15:15

问题


*** Variables ***

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

in my settings.txt file i have a variable named {BROWSER} AND associate value as shown above it is firefox

but what i want is

*** Variables ***

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

something like above... so when i run test-suite first it will run in firefox and after completion of all testcases it will close firefox and will open chrome and run all the test cases again on chrome browser ..and so on after this it will run on IE

so how could we do this?

I don't want to do it manually (I mean by passing one by one or by editing txt file). fully automatically.... once i run the test it will automatically test in all the browsers.

PS: this is in settings.txt file and i have two folders in which i have test.txt files. so there is the main problem ..i have to iterate these folders in a loop

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

i run test cases like this $pybot test1 test2


回答1:


I see 2 ways to do it.

1) loop over your browser and call a keyword that do your test:

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

Here is what you get with this test:

[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) another way (which I prefer) is to keep your ${BROWSER} variable with a single value and call your test case several time with a new value for the variable that you give on the command line:

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



回答2:


Ok I think I've solved this problem by writing a simple script.

I Just wrote a program which will read the file settings.txt and find the line @{BROWSER} firefox chrome IE and then extract browsers name and store into a list . so this script will return a List something like this ['firefox', 'chrome', 'IE']

now instead of using single pybot command I'll use it in a Loop

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

settings.txt file will contain two variable

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


来源:https://stackoverflow.com/questions/20965583/how-can-we-pass-different-browser-at-once-in-robotframework

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!