所以我有这种情况,我想将关键字文件与页面对象文件组合起来。
假设我有 foo.robot
作为关键字,bar.robot
作为页面对象:
#foo.robot
*** Settings ***
Ressource bar.robot
*** Keywords ***
Click Submit Button
Wait Untile Element Is Visible ${variable_from_bar} 60s
Click Button ${variable_from_bar}
#bar.robot
*** Variables ***
${variable_from_bar} //button[@id="dummybutton"]
我的想法是像这样将它们结合起来
#foobar.robot
*** Variables ***
${variable_from_bar} //button[@id="dummybutton"]
*** Keywords ***
Click Submit Button
Wait Untile Element Is Visible ${variable_from_bar} 60s
Click Button ${variable_from_bar}
有什么特殊原因让我不应该进行这种练习吗?或者我以后应用后会遇到什么技术问题?
最佳答案
一般情况下,我建议将 .robot
重命名为 .resource
,这样资源文件在命名时也可以与套件文件区分开来。
至于组合,我认为这不是一个坏方法,但层次结构可以更加分离。假设有跨多个页面使用的 Web 元素,您希望将它们放入独立于页面对象资源文件的单独资源文件中。
假设有一个独特的按钮。
按钮.资源
*** Keywords ***
Click Unique Button
[Arguments] ${button_locator}
# Handle some unique behaviour
Click Button ${button_locator}
这可以跨多个页面使用,其中按钮的用途不同,ID 不同,但处理按钮点击的方式仍然相同。
PageA.资源
*** Settings ***
Resource button.resource
*** Variables ***
${variable_from_bar} //button[@id="dummybutton"]
*** Keywords ***
Do Stuff
Click Unique Button ${variable_from_bar}
PageB.资源
*** Settings ***
Resource button.resource
*** Variables ***
${download_file} //button[@id="downloadbutton"]
*** Keywords ***
Do Stuff
Select File my_file.txt
Click Unique Button ${download_file}
总而言之,您可以将页面对象关键字和定位器变量合并到同一个文件中,但您应该将通用的、页面独立的关键字保留在它们自己的资源文件中。
关于robotframework - 将 Robotframework 关键字和页面对象结合起来是好还是坏做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66456070/