问题标签 [pageobjects]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
118 浏览

pageobjects - 当多个元素拥有相同的类名时,我们如何获取所有元素值

当多个元素拥有相同的类名时,我们如何获取所有元素值。

例如:考虑我有 n 个具有相同类名的元素,如下所示

如何获取类名为 country_name 的所有元素值。

我也试过如下:

当我执行它时,它只打印第一个值(国家 1),其他值不打印。我怎样才能得到所有的价值

有什么建议么?

0 投票
5 回答
42066 浏览

selenium - 如何避免页面对象中的复合类名称错误?

当我尝试使用class = "country name"在页面对象中有空格的类名时,我得到:

如何使用有空格的类名。

例如:

0 投票
4 回答
5425 浏览

java - 页面对象应该返回页面对象吗?

我们目前正致力于在我们公司建立一个良好的测试框架。它适用于中型到大型网络应用程序,可能有几十页。我们目前主要编写基于 WebDriver Selenium UI 的测试。

我们正在尝试确定一些编码标准,我们正在讨论的一件事是是否使用始终返回 PO(即使页面相同)的页面对象 (PO),仅在您离开当前页面时返回 PO一个新的,甚至不返回 PO。我一直认为返回 PO 是 PO 设计模式的一个关键特性,但我对此可能不正确。

基本上,我们试图在以下模式之间做出决定:

一个比另一个更可取吗?

0 投票
2 回答
533 浏览

selenium - 另一个 findElement 中的硒 findElement

例如,我有一个 element1,我找到 element2 后可以找到它,如下所示:

我想使用 PageObjectModel 和注释 @FindBy,如下所示:

问题:我不知道如何重写代码,这不起作用:

0 投票
2 回答
56563 浏览

design-patterns - Selenium WebDriver 中的页面对象模式是什么?

Selenium WebDriver 中的页面对象模式是什么?

它有什么用,我们如何在 Selenium WebDriver 中使用它?

示例将不胜感激。

0 投票
3 回答
3507 浏览

selenium-webdriver - 如何处理 Element 不再附加到页面对象中的 DOM?

我正在尝试使用页面对象测试网站,当我执行脚本时,我在调用时间歇性地收到Element is no longer attach to the DOM (Selenium::WebDriver::Error::StaleElementReferenceError)错误消息一个函数。

如果有任何建议,我该如何克服这个问题?

0 投票
2 回答
220 浏览

watir - 如何从链接集合中获取某些特定链接

我正在使用 watir-webdriver 有几行相同的代码,如下所示:

我需要获取 p 标签中包含的第一个链接和 p 标签中包含的第二个链接,因此使用页面对象我添加了以下代码:

...

最后一行会给我两个链接:http://www.somesite2.comhttp://www.somesite2.com 不幸的是,我无法在 css 中指出:last/:first 等。

第二个链接可以通过将 css 更改为:

但是我怎样才能从这些块中获得第一个链接呢?当然,我可以获得两个链接并使用每 2 个链接,但也许有替代解决方案?

0 投票
1 回答
195 浏览

java - 何时停止在对象中定义 FindBy 并将它们移动到测试中

所以我有一个有趣的难题,我很想从其他 Webdriver 框架架构师那里得到一些反馈。目前我遵循一个非常标准的执行模型:

  • 基础对象
  • 页面对象(扩展基本对象)
  • Junit testobject(引用一个或多个页面对象)

在我的页面对象中,我选择将我的 findBy UI 映射定义为变量,然后在我为该页面对象编写的各种方法中引用它们。我觉得这很好用。但是,我正在讨论的一个问题是,当可能存在 50 个单独的超链接时,如何处理页面(及其各自的页面对象)的方法设计。

到目前为止,我的倾向和设计一直是为我创建的大多数页面对象上的每个链接创建方法(我认为它们真的是服务),以便 @Test 我可以简单地调用我想要的方法并完成它。这消除了测试维护的可能性......我知道的标准做法。但是我现在正试图决定......创建 50 种方法是否有意义,为页面对象的每个链接创建一个方法,或者我是否违背自己的意愿并从测试本身传递链接文本,输入一个单一的方法使用传入的参数构建 findBy。

一方面,页面对象中的代码更少,但另一方面,测试变得更加脆弱。这些链接有可能在数百个测试中成为参考。

这是我的模型的一个简短示例:

这样我们就到了问题的结尾。该模型非常适合测试设计。我的服务(方法)是绝缘的并且易于维护。但是,如果链接有 50 个 UI 映射而不是上面显示的 2 个,我该怎么办?我玩弄了以下设计,但真的不喜欢它@Test:

任何想法将不胜感激!

0 投票
1 回答
252 浏览

java - 具有层次结构的页面的 PageObjects 的体系结构/设计:menu-items/menu-sub-items/menu-sub-items-tabs

我正在为带有 selenium webdriver 的单页 webapp 开发一个 Java 框架,使用以下模式:PageObject、SlowLoadableComponent(责任链)、PageFactory、HaveExpectedControls(每个页面都知道它应该包含哪些元素并通过 .getExpectedControls 返回它们)

所以我创建和使用我的页面,例如:

我目前的目标是:测试用户在浏览我的网络应用程序时可以执行的所有“路径”。

一切都很容易,直到我进入网页,在我的 webapp 层次结构中“更深”......

我的页面可以表示如下

这里有一些“规则”可以得到更多解释:

问题: 如何设计:

  • 我所有页面的类层次结构?

  • 我可以在测试中浏览它们的方式?(尤其包括特殊情况,我可以通过几个链接获得一些页面)

0 投票
0 回答
236 浏览

perl - 在 Perl 中使用 Selenium 页面对象模型,如何将新的页面对象传递回测试脚本?

我正在使用页面对象模型组织我的功能测试。测试用例的一个示例是登录并检查应用程序仪表板上的一些文本。为此,我的项目中有类似Loginpage.pmDashboard.pm的模块,以及类似log_in_and_check_text.pl.

现在,使用页面对象模型的原因显然是仪表板页面要做的不仅仅是显示此文本,而且它将在许多不同的测试用例中以不同的方式使用。Page Object Models 上的文档建议我要创建一个Loginpage对象来登录,然后Dashboard在成功后发回一个对象。

我如何在 Perl 中做到这一点?此外,这有必要吗?如果我在测试脚本中而不是在那些对象中启动我的 Selenium 驱动程序,我不能Dashboard使用相同的驱动程序在我的测试脚本中创建一个新实例吗?