我的测试是使用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.
它有效,但它很难看。我认为机器人框架的重点在于看起来像自然语言,所以看起来应该有一种不那么愚蠢的方式来做到这一点。我用我能想到的每一种方式搜索它并找不到任何东西,或许我不知道词汇。
答案 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_demo
和begin_demo
关键字是用python编写的,则可以调用BuiltIn().get_variable_value('${DRIVER}')
来获取值