【问题标题】:SeleniumWebdriver: Implement Page Object Pattern in Python using Pycharm toolSeleniumWebdriver:使用 Pycharm 工具在 Python 中实现页面对象模式
【发布时间】:2015-11-10 13:56:21
【问题描述】:

尊敬的测试自动化工程师, 我正在使用 Pycharm 工具Python 语言 中实现 Page Object Pattern。 我的担忧如下:

  1. 项目结构 - 2 层: 在项目文件夹下:我想要 2 个包(python 中的文件夹,pycharm):1 个文件夹应该包含所有要执行的测试,而其他包应该包含元素定位器等等 [如果你能分享项目结构继承人的屏幕截图,我将不胜感激]

  2. 我在从其他包(文件夹)调用元素定位器时遇到问题

  3. 定位器应该是页面明智的,而不是在一个文件中完整的项目定位器(它会造成混乱!-分享最佳方法)

IMP:我不希望定位器文件(.py)和测试用例在一个文件夹中,应该在不同的文件夹中。

我在网上浏览了几个例子,但它们不是 2 层的,也不完全遵循页面对象模型结构项目。

【问题讨论】:

  • 这是我的structure(对于Java,但核心思想是相同的)。对于 b2b 和 b2c 项目,每个项目都包含测试包和 ui.pages 包、通用共享类(例如用于管理 Wedriver)和 utils。框架包包含数据提供者。
  • 感谢@EnotEnotovich,您能否分享基本的运行演示源代码,因为当类位于其他包中时,我在从定位器类调用/导入定位器时遇到代码问题(不一样)
  • 您的目标是让第二个包(带有定位器)可在 Python 项目中重复使用吗?
  • 我不知道python语法,但假设它应该与java中的import相同。你可以试试github.com/actmd/elementium
  • 是的@PaulEveritt,因为这使它成为精确的页面对象模型,而不是通过在同一个包中使用定位器。假设我的 Web 应用程序中有 20 个测试用例和 100 多个页面,这意味着每个测试用例将有 20 个类(显而易见),每个页面将有 100 个以上的类(.py 文件)来包含该页面的定位器。所以,同一个包将包含超过 120 多个文件,所以它会弄得一团糟!我认为将定位器放在不同的包中将有助于将测试放在单独的包中并将定位器放在单独的包中。

标签: python selenium-webdriver automated-tests pycharm browser-automation


【解决方案1】:

明确一点,您希望在当前的网络应用项目和未来的网络应用项目中使用该定位器和助手包,对吧?

如果是这样,那就是 Python Packaging 的案例。不是最简单的主题,但有据可查且非常标准(不是 PyCharm 独有的。)

如果没有,并且您只是希望当前项目能够导入该文件夹,那么您需要在 PYTHONPATH 上获取该目录。在您的 PyCharm 运行配置中,将该路径添加到运行配置的 PYTHONPATH。

【讨论】:

    猜你喜欢
    • 2014-03-18
    • 2017-12-03
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    相关资源
    最近更新 更多