在多个机器人框架测试中使用一个浏览器会话

时间:2018-04-06 20:53:49

标签: python selenium robotframework

我的测试是使用selenium和Chrome在python中编写的,这是我想在.robot中做的事情:

Start New Session

Perform test 1

Perform test 2

这可能吗?因为所发生的事情是每个后续行都忘记了有一个Web浏览器打开并崩溃。我尝试将它保存在python中作为self.driver但是会被删除。为了使其工作,我在机器人文件中创建了一个$ {DRIVER}变量,然后让Suite设置输出$ {DRIVER},然后我将$ {DRIVER}传递给每个测试。

*** Variables ***
${DRIVER}     

*** Keywords ***
Start New Session
    ${DRIVER}    ${fail} =    Open Browser    ${ADDR}    ${DRIVER_LOCATION}
    run keyword if    ${fail}==1    fatal error
    Set Suite Variable    ${DRIVER}
    reset_demo    ${DRIVER}
    begin_demo    ${DRIVER}

Perform Test 1
    abc    ${DRIVER}
    xyz   ${DRIVER}

etc.

它有效,但它很难看。我认为机器人框架的重点在于看起来像自然语言,所以看起来应该有一种不那么愚蠢的方式来做到这一点。我用我能想到的每一种方式搜索它并找不到任何东西,或许我不知道词汇。

1 个答案:

答案 0 :(得分:1)

我从未见过有人以这种方式使用selenium,你需要对驱动程序对象的引用。但是,如果您的目标是创建看起来像自然语言的关键字,他们只需要使用套件变量而不是将其传递给它们。

*** Keywords ***
Start New Session
    ${DRIVER}    ${fail} =    Open Browser    ${ADDR}    ${DRIVER_LOCATION}
    run keyword if    ${fail}==1    fatal error
    Set Suite Variable    ${DRIVER}
    reset_demo
    begin_demo

reset_demo
    ${DRIVER}  blah blah
begin_demo
    ${DRIVER}  blah blah

如果您的reset_demobegin_demo关键字是用python编写的,则可以调用BuiltIn().get_variable_value('${DRIVER}')来获取值

相关问题