问题标签 [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 回答
1424 浏览

ruby - 使用页面对象查找字段集

我试图找到一组复选框,但我需要在字段集中找到它们。html 是这样的(它是一个 gwt 应用程序,因此会生成大量内容:

我正在使用 Watir 和页面对象 gem。我正在尝试查找字段集,但没有字段集元素。从长远来看,我需要做的是找到每个复选框,获取它是否被选中的值,并将其与其名称一起存储在哈希中。

即使 page-object 有一个 fieldset 方法,我也不知道如何找到每个连续的复选框并获取值和标签。

0 投票
2 回答
334 浏览

ruby - 在元素上调用方法时收到弃用警告 - 可以使用一些建议

在页面对象元素上调用方法时,我经常收到弃用警告。这向我表明我可能还没有按预期使用 gem。我可以使用一些帮助,有人可以推荐一种更好的方法来处理这样的事情吗?

我正在处理一个页面,其中包含一个 div 列表,每个 div 都包含一个复选框元素。换句话说,是这样的:


我想通过索引访问一个复选框,然后在需要时检查它。这是我目前拥有的:

这可行,但是我在第 5 行,checkbox.set 上收到弃用警告。将其更改为 checkbox.click 将其清除。尽管如此,我不相信我正在以“页面对象宝石”的方式来做这件事。使用 watir-webdriver,divs 给了我一个可以使用的数组,我可以用类似的方式完成同样的事情。有没有人使用 gem 做过类似的事情?

0 投票
1 回答
1972 浏览

page-object-gem - 过时元素引用错误

使用 page-object gem 和 Watir webdriver,我们偶尔会在页面上遇到 Selenium::WebDriver::Error::StaleElementReferenceError,它会加载一些基本内容、发出 ajax 请求并重新填充更多信息(对于速度的错觉在页面上)。

发生这种情况是因为那里会有一个 HTML 元素,它会很快消失并在用户真正意识到之前再次出现。

我们使用页面对象的“.when_present”方法等到对象第一次出现在页面上之后再访问它。然而,即使在代码找到了元素之后,它通常也会收到过时元素错误,因为原来的 HTML 元素已经消失,而另一个元素在它尝试访问它时又重新出现了。

我们找到了一种仅使用直接 Watir(不是页面对象)的方法。我们基本上在 Watir::Wait.until 块中捕获了 StaleElementReferenceError。如果遇到异常,则块返回 false,Wait.until 再次尝试,直到它变为 true 或最终超时。我们发现,这通常第一次获取 Stale Element(在下面的第 3 行),从救援返回 false,Wait.until 再次执行该块,第二次为 true,测试继续并通过.

我真的只是想知道这种事情是否有任何类型的页面对象包装器。我什么也找不到。如果没有,那没关系,因为上述方法有效。只是好奇。

谢谢

0 投票
3 回答
3213 浏览

ruby - PageObject“等待元素”方法不起作用

我正在使用 cucumber、selenium-webdriver 和 page-object gem 进行测试自动化。当我尝试运行简单的测试黄瓜时,会遇到以下错误:

这是黄瓜的特点:

测试所在的步骤定义:

和页面对象:

怎么了?司机不要等待元素的存在

0 投票
3 回答
616 浏览

ruby - Cucumber Pageobject - 未定义的方法链接

我想在我的类初始化中使用 PageObject链接方法,但我无法做到:(

这是我想要做的:

当我在创建 MyPage 对象的实例时运行 Cucumber 时,我收到此错误:

我目前为避免此问题正在做的事情如下:

这工作正常,但我不想在我的模块中硬编码链接名称。

我也无法理解为什么在第一种情况下初始化时该方法不可用。

0 投票
2 回答
2545 浏览

pageobjects - 如何使用水豚页面对象中的 select_list 注释从下拉列表中选择一个选项

对于这样的 HTML:

当我尝试使用选择选项时

我收到错误消息

当我不使用索引值时它工作正常。

0 投票
1 回答
1990 浏览

ruby - 遍历页面对象的所有元素

我有一个搜索过滤器。我需要能够检查页面上的所有字段是否都存在并包含值(如果它们是选择框)。

我已经使用 MethodFinder gem 成功地做到了这一点,但我想知道是否有任何方法只使用 PageObject gem。

我已经成功使用了上述方法,但现在我无法使用我想做的页面对象方法。我希望能够以某种方式提供有效“元素”列表,这只是元素的 PageObject 版本。

编辑:所以事实证明正在发生一些非常可疑的事情。我有一个 RSpec 测试从上面的类中获取字段。它看起来像这样:

现在根据文档, your_element_element 命令应该返回 watir 元素。这发生了一次。第二个 put 以某种方式变回 PageObject 对象。我现在根本不知道发生了什么。这是上面的一些输出。

0 投票
1 回答
138 浏览

ruby - 从模块访问 JS-widget

我尝试从我的模块访问自定义 JS-widget。基本页面类只包括 PageObject、DataMagic 和 RSpec::Matchers。

我的课

模块

JQuery UI 日期选择器小部件

和步骤:

运行此测试时,我看到以下错误:

那么,如何从我的模块访问该小部件?

UPD:浏览器从这里开始hooks.rb

0 投票
1 回答
747 浏览

ruby - 尝试绕过钩子时出现未定义的方法错误

我正在尝试为每种帐户类型多次运行给定的场景。我在其他线程中发现“围绕钩子”可能是采用 DRY 方式的最佳选择。

下面是我的代码:

因此,当我运行功能文件时,我得到以下输出和后续错误:

visit_page在执行处理属于 PageObject gem的方法之前,一切似乎都按预期工作。

0 投票
0 回答
1556 浏览

ruby - Selenium WebDriver executeScript 的问题(在 Ruby 中使用 watir-webdriver)

我在使用 Watir WebDriver 的 browser.execute_script 命令执行特定的 javascript 片段时遇到问题:

这是有问题的Javascript:

为什么我必须使用这样的暴行?好吧,因为我正在为其开发测试的产品太糟糕了。每个单元格都使用相同的 id 属性,因此我不能直接在文档中的对象上进行分区。更糟糕的是,该文档有两帧深。帧接收。

使用明显的解决方案(使用 watir-webdriver 的 API)是不可行的,因为填充 32 个网格行的任务需要一半!一个小时。

我可以让上面的 Javascript 在浏览器的开发者工具中运行。(该产品支持的浏览器只有 IE8、9,兼容模式。)我无法访问 jQuery 或任何花哨的 javascript 库。使用这个 javascript 几乎可以立即填充行。

当我使用 browser.execute_script 命令运行它时,我得到一个

奇怪的是,如果我只是使用

然后我收到 Net::HTTP 库的错误,Selenium 在堆栈中的某处使用该库来来回发送命令到浏览器。(更具体地说:ERRNO::ERRCONNREFUSED)

帮助?

编辑:这是我用来执行代码(并生成少量 Javascript)的直接脚本:

此方法的数据参数是键值对的哈希,其中键是提供给页面对象访问器的方法的名称,值是我尝试填写的值。作为中间过程的一部分,我从页面对象元素(作为每个元素的标识符提供)中获取 id 元素。

页面类的设置方式有一些特殊的结构:这是基本思想:

所以示例调用将是(来自黄瓜测试)

除此之外,还有一个不幸的问题是需要多次调用“attach_window”才能到达该页面(由于页面位于某种模式对话框中)。这个问题可能很大程度上与这种交互有关。这是我能想到的唯一会导致问题的事情。

这个 SO 问题的重点是希望有第二双眼睛可以排除任何明显的错误。我计划采用另一种解决方法。