【问题标题】:Python-Selenium. Testing across different pages with POM蟒蛇硒。使用 POM 跨不同页面进行测试
【发布时间】:2021-03-23 19:17:31
【问题描述】:

第一次在这里发帖。

我目前正在使用 PythonSelenium 自动化 UI 测试,我们还在我的工作场所使用 POM(页面对象模型) .

我的团队要求我进行一系列测试来验证用户权限级别。假设我有 3 个页面:主页、设置和相册。所有用户都可以在主页查看帖子,但只有部分用户可以在“设置”中更改内容或在“相册”中上传照片。

如果我需要单独执行这将不是问题,但因为我需要检查用户可以做什么或不可以做什么,这需要访问多个页面,我想这涉及多个页面对象。

我的问题是:如果每个页面都在其自己的页面对象中,我该如何进行此测试?我曾想过做另一个类来管理每个权限并进行测试来验证它,但我仍然遇到多个页面对象的问题。

我真的不知道如何解决这个问题,以至于我实际上创建了这个帐户哈哈。

感谢您的宝贵时间!

【问题讨论】:

  • 你到底在问什么? POM 用于多个页面。
  • @DMart 我们的应用程序中有多个页面,这就是我们使用 POM 的原因。问题是我的团队想要验证用户可以在一个测试中在多个页面中执行不同的操作,我从来没有做过,我通常会在一个页面中测试一个功能。

标签: python selenium automation permissions pom.xml


【解决方案1】:

我不确定我是否完全关注您,但我认为您指的是必须遍历多个页面来检查每个用户/测试的权限。如果你想使用 POM,你可以在你的 POM 文件夹中有以下类:

homepage
settings
albums

每个类有不同的 .py 文件。

不确定您应用的布局,但我们假设在homepage 中有指向settingsalbums 的链接。在这种情况下,在您的 homepage 类中,您将拥有(除其他外)2 个方法,1 个返回 settings 页面的实例,一个返回 albums 页面的实例。

然后您的测试将遵循类似的内容,以测试用户对 albums 的权限:

Go to Homepage -> execute method for returning albums page -> assert user can access page (or not access page)

显然有很多地方需要填空,这只是非常高的水平

编辑:

下面的示例是关于如何从 Python 中的另一个类返回一个类对象,就像我提到的那样。这取自:https://willowtreeapps.com/ideas/organizing-automated-tests-with-page-object-model

def login(self, email, password):
        self.set_password(password)
        self.set_email(email)
        self.click_submit()
        return HomePage(self.driver)

在这种情况下,您在登录页面/类中,并且登录方法正在返回 HomePage 类(将您从登录带到主页)

【讨论】:

  • 我在想一些类似的事情,但是在主页中创建设置或专辑的实例不会导致代码脆弱吗?这是某种类型的循环依赖吗?高层很好,给了我一个很好的方向:)
  • 一点也不脆弱。然后我再次用 C# 术语谈论类和对象比 Python 更结构化。即使您没有在主页中返回对象的实例(例如专辑),您也可以只使用一个方法直接将您带到专辑页面。 driver.find_element_by_xpath([some-element-that-takes-you-to-albums-page]) 然后在测试中您只需运行该方法并断言用户可以或不能打开该页面
  • 谢谢!看起来我要么使用我的类的实例并冒着创建脆弱代码的风险,要么不使用任何实例,但不得不重写我可能已经在这些类中拥有的代码。如果有更好的解决方案超出了我目前的能力范围,所以现在必须这样做。再次,非常感谢!
  • 创建类的实例一点也不脆弱。我刚刚添加了一个代码示例和一个链接。希望这是有道理的
猜你喜欢
  • 2021-05-21
  • 2016-05-28
  • 2021-06-28
  • 2021-07-07
  • 2023-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
相关资源
最近更新 更多