selenium - 使用具有相同 selenium 测试的不同页面对象集

标签 selenium testing automated-tests pageobjects page-factory

[这是与 SQA 交叉发布的 - https://sqa.stackexchange.com/questions/35081/using-different-sets-of-page-objects-with-the-same-selenium-tests]

我正在为一组类似的网站开发 selenium 测试套件。测试套件将针对每个网站单独执行,套件中的测试适用于所有网站。

这些网站建立在相同的底层平台上,但具有不同的主题/方案,因此这些网站的页面对象需要不同。这不是一个或两个选择器不同的情况,而是大多数选择器不同 - 但结构的其余部分是相同的。

我可以轻松地创建两组(或三组,或其他)页面对象,但是我不知道如何告诉测试执行程序(在我的例子中是 Cucumber cli)要使用哪些页面对象。

我能想到的最接近的方法是使用具有公共(public)基类的不同包名称,然后从公共(public)基类扩展各个页面。另一种可能性是将所有选择器提取到属性文件中,并根据输入参数加载一个或另一个,但这会使我无法使用 PageFactory。我可能还可以在不同的源集中创建单独的页面对象集,然后根据我的需要编译一个或另一个 - 但是,同样,我可以想到理论,但不能想到执行。

那么,什么是正确的方法以及如何实现呢?如果重要的话,该项目是使用 gradle 构建的。

最佳答案

由于测试适用于所有网站,我假设页面之间的唯一区别是对象后面的选择器。

cssSelectorxpath 提供了or。假设文本字段的 ID id1id2id3 取决于您可以使用的页面

@FindBy(how = How.CSS, using = "#id1, #id2, #id3")
private WebElement textField;

这将返回与其中一个 ID 匹配的 WebElement

关于selenium - 使用具有相同 selenium 测试的不同页面对象集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51702719/

相关文章:

python - 如何获得第 3 方 cookie?

java - 如何在 iOS 上使用 appium 查找应用程序版本

java - 添加公共(public)类以使用 xpath 和 Java Selenium 进行单击

python - PhantomJS 1.8 在 python 上使用 Selenium。如何屏蔽图片?

angular - 如何模拟和监视测试套件中的 namespace ?

python - 在测试套件运行期间 Hook python的覆盖范围?

java - 如何从 junit 中的 java 扩展文件中读取和测试类?我怎样才能访问该类进行测试?

javascript - 单击时 TestCafe 持久化数据

java - 处理日历以从日历中的当前日期选择日期? Selenium

python - 集成到 for 循环 python 中时,actionchains send_keys 发送的重复文本