问题标签 [page-object-gem]

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 回答
518 浏览

ruby - 在元素声明中为 id 使用变量

我有一个超类DemoPage和几个子类SDemoPageEDemoPage等等。所有这些页面上都有完全相同的元素,看起来像上的 id 和看起来像SDemoPages-demo-test1的相应 id 。在我的类中,我已经声明了所有元素,并且我需要一种方法来添加基于子类(调用类)的 id。这就是我目前所拥有的。EDemoPagee-demo-test1DemoPage


但这不起作用。我得到错误,undefined method 'select_list' for #<SDemoPage>...

这不是我最初的尝试。我首先尝试设置一个 attr_accessor :current_page_id,然后对其进行初始化,但这也没有用。然后我尝试打开元类并在那里设置 id。最后我做了我在这里设置一个类实例变量的地方SDemoPage,我终于能够让它与这段代码一起工作:

但这不允许我根据其他调用类设置 id。

我还从其他一些尝试中留下了一些代码,例如使用哈希查找,但是在页面对象方法已经意识到变量/方法 @current_class_id 不存在之后,这些仍然在初始化方法中设置了实例变量

我不确定从这里去哪里。


编辑:

所以我终于想通了,但我不确定这是否是解决这个问题的最佳方法:


这样做有什么问题吗?我确实需要修补初始化方法,因为其中还有其他东西我没有在这里展示。因此,既然我已经需要这样做了,有没有理由不在SDemoPage实际的上下文中“创建”元素DemoPage?还是贾斯汀的回答完全是更好的做事方式?

编辑 2:我接受了贾斯汀的回答,因为在极少数情况下,我不需要修改 PageObject 中的初始化方法,他的回答会减少重复和整体代码。

0 投票
1 回答
336 浏览

ruby - 使用 page-object gem + ruby​​ 在一个类中有多个 page_url

我有 6 个产品页面,出于功能测试的目的,它们几乎相同。它们的区别仅在于我目前不做任何事情的描述和图像。这是我的 current_setup:基页:product_page.rb

产品页面看起来都类似于:apple_page.rb

有没有办法整合所有这些,以便我只有 product_page.rb?我需要 page_url,因为我在测试中确实使用了 visit(ApplePage)。

0 投票
1 回答
681 浏览

ruby - 如何使黄瓜中的一个步骤的价值可用于其他步骤

在我的场景中,我需要在其他步骤中使用的第一步或两组数据。步骤如下所示:

我需要保存每种水果的类型和数量,以便在以后的步骤中验证定价、小计、总计等一些内容。最初我使用实例变量,因为场景很简单。它们只包括一种水果类型和数量。但是,由于场景包括更多水果类型和数量,我需要弄清楚如何保存它以使其可用于后续步骤。当我们每个场景只使用一种水果和数量时,我的步骤是这样的:

改变它以使其继续工作的最佳方法是什么?

0 投票
1 回答
986 浏览

ruby - 使用页面对象 gem 将固定元素后面的元素带入视图

我的页面在顶部包含两个 div(一个标题和另一个部分),它们是固定的,而页面的其余部分可以滚动。我需要将鼠标悬停在链接元素上,然后单击将鼠标悬停在链接上时出现的按钮。由于我使用的是页面对象 gem,因此我尝试使用 scroll_into_view。但是,链接仍然保留在固定 ​​div 后面。这可以防止按钮显示。有什么办法可以强迫它进入视野吗?页面可滚动区域顶部和底部的链接工作正常,但页面中间的项目有问题,因为它们在滚动时出现在固定 div 后面。我正在使用 ruby​​+watir-webdriver 和页面对象 gem。

不幸的是,我无法发布该网站。

我的代码看起来像这样:

页面中间的链接保留在固定的 div 后面。当它悬停时,它实际上会触发标题中的导航下拉菜单,因为链接就在它的后面。似乎适用于 70% 的链接。中间的 30% 是现在的问题。

0 投票
1 回答
424 浏览

ruby - 在 page_object gem 中更改元素级别等待的默认超时

有没有办法对页面对象gem中元素级别等待的默认超时进行全局更改?我们使用默认的 5 秒,但需要根据环境不时更改它。我们的主要测试环境在多台服务器上运行,因此响应时间非常快。但是,我们有一个或两个仅在一台服务器上运行的环境,响应时间有点慢。我想根据环境更改此值。我意识到这并不理想,但这是我被要求研究的。

谢谢。

0 投票
2 回答
1141 浏览

ruby - # 未定义的方法“visit_page”(无方法错误)

我当前的问题仅在从命令行执行测试时发生。从 RubyMine 运行脚本时,我没有任何问题,从命令行看起来像这样

cucumber features/regression/createCloudUser.feature -r features/step_definitions/ -r lib/

执行:

它指向以下页面:

这是课程:

项目设置如下:

添加了 env.rb

我不确定为什么 visit_page 会在该页面上引发错误。当我从 Rubymine 执行时,我没有问题并且测试成功运行。请帮忙。

0 投票
2 回答
1713 浏览

watir-webdriver - 从 iFrame 中访问元素 - 在 watir-webdriver 0.6.6 中失败 - 在 0.6.4 中工作正常

我正在尝试在 iFrame 内的下拉列表中选择一个值。框架嵌套在表格中。HTML:

我的代码:

错误: Watir::Exception::UnknownFrameException: unable to locate frame using {:src=>/MyApplicantPortal\/Applicant\/\d+\/SelectOrderTemplate\?t=1/, :tag_name=>"frame"}

0 投票
1 回答
259 浏览

ruby - 如何实时填充多个页面对象文本字段

我正在处理一个问题,但无法找到一个聪明的解决方案。简而言之:假设我们在 page-object 中定义了许多文本字段元素:

我可以轻松地填写一个字段:

...调用方法:


我正在寻找的是使用独特的方法来填充几个字段,使用页面对象元素名称作为方法参数,例如:

...并以这种方式调用该方法:

上面的示例因“未定义的方法”错误而失败。我尝试使用这种send()方法self.send('field') = 'John Doe'不成功。我很确定有办法做到这一点......你能解释一下这个问题吗?

0 投票
1 回答
143 浏览

watir - 使用 send 动态选择页面对象中的选项,等等

我想动态使用页面对象。像这样的东西:

但是,使用 select_index 对象,而不是 input_field:

但这给了我“未定义的方法`state_select_element.option(index,1).select'”的错误

如何才能做到这一点?

0 投票
1 回答
455 浏览

jruby - page-object gem + Jruby中的page_url vs navigate_to

我正在尝试使用 jruby + page-object gem + Cucumber 来证明概念。我使用了以下语句。

app_url = 'https:\\google.com'
page_url(app_url)

我得到一个

NoMethodError:未定义的方法“page_url”用于#

然而,

导航到(app_url)

工作正常。page_url 在 Ruby 中运行良好。

这是在 jRuby 中的工作方式吗?虽然 navigate_to 有效,但这有什么不同吗?感谢您的帮助!