将定位器存储在Robotramework中的最佳方法



我正在构建一个RobotFramework自动化项目。

随着项目的增长,随着项目中选择器编号的增加,它也变得更加困难。

项目中的10K选择器(一个大一个),并且每个项目几乎没有发生任何变化;

现在我有以下结构:

 .
 |-- Project
 |   |-- Generic Keywords
 |   |   |-- Web App A
 |   |   |   `-- GUI_Actions.robot
 |   |   |-- Web App B
 |   |   |   |-- GUI_Actions.robot
 |   |   |   |-- DB_Actions.robot
 |   |   |   |-- ...
 |   |   `-- ...
 |   |-- Tests
 |   |   `-- Web App A
 |   |       |-- Suite1.robot
 |   |       |-- Suite2.robot
 |   |       |-- ...
 |   |   `-- Web App B
 |   |       |-- Suite1.robot
 |   |       |-- Suite2.robot
 |   |       |-- ...

以使项目可扩展且可维护的方式保持这些定位器(与代码分开)的最佳方法是什么?

  • 与文件(资源)分开的文件夹"定位器"(root)和每个定位器一个变量?
  • "通用关键字"one_answers" Web App"文件夹中的一个定位器文件(一个通过应用程序)?
  • ...等

有很多方法可以做到这一点,哪一种是最好的?

我感谢一些想法/建议。谢谢。

不会有一个适合您问题的答案,因为其中的很大取决于您的应用程序,技术功能级别以及您(组织)编码样式。

如果您的应用程序的UI以页面或页面部分的形式重复,则使用静态ID,则页面对象模型非常合适。有一个可以使用或从中汲取灵感的PageObject库。

集中定位器的另一种方式是使用诸如Click Element abc=SomeVirtualId之类的自定位器。在另一个问题的答案中可以找到这种方法的一个例子。当您的ID对您的元素是可以预测的并且可以生成的时,此方法也很有用。然后它使逻辑中心无需许多自定义关键字。

首先,没有"最佳"。一个最适合一个组织或团队的最佳选择不会最适合另一个组织。你有多少?他们多久改变一次?它们在页面之间或应用之间重复了多少?您是在测试中还是仅在关键字中使用它们?您的大多数关键字是用机器人语法编写的,还是用Python或其他一些编程语言?

就我个人而言,我对整个项目的而不是而不是的储存定位器。我认为测试根本不应该有定位器。

我认为,通过创建自己的自定义关键字,当您将机器人框架用作框架时,机器人框架最有效。定位器只需要对使用它们的关键字或关键字可见,而不是在您的代码中撒上。

我是使用页面对象模式的强烈拥护者,其中每个页面或页面的每个部分都表示为对象。在该对象中,您只需要该页面或页面部分中的元素的定位器。根据我的经验,通常每页只有很少的定位者。

有关如何使用机器人实现页面对象的示例,请参阅我的开源项目,Robotframework-pageObjectLibrary。该实现具有用于存储定位器的数据结构,但是在过去的一年中

目前我正在研究一个类似的大型机器人框架项目,所以我必须自己解决这个问题。这是我的解决方案:

.
|-- Project
|   |-- Tests
|   |   |-- Suite1.robot
|   |   |-- Suite2.robot
|   |   |-- ....robot
|   |-- Resources
|   |   |-- Suite1_Resources
|   |   |   |-- Suite1_Keywords.txt
|   |   |   |-- Suite1_Variables.txt
|   |   |-- Suite2_Resources
|   |   |   |-- Suite2_Keywords.txt
|   |   |   |-- Suite2_Variables.txt
|   |   |-- ..._Resources

详细信息

一间套件处理整个站点范围内的关键字(例如,检查导航),而其余的则针对每个单独的页面。每个关键字文件仅处理网站上一个特定页面的关键字。每个变量文件仅处理其关联页面的变量。每个变量名称均以与之关联的页面的两个字母ID开头,以避免从另一个页面中意外继承同一名称变量。关键字文件从其关联的变量文件和其他关键字文件中继承。。

相关内容

  • 没有找到相关文章

最新更新