1

我已将元素定义sections为包含单个元素的列表以对数据表进行建模。Sections 集合的每个 Section 对应于表的一行,每个elementSections 定义对应于该行的一列。

我想在 Sections 集合中搜索对应于具有给定 id 的行的 Section,然后单击该行的元素。

不幸的是,我找不到搜索返回的 Section 对象数组的方法PageObjectClass.<sections_name>

相反,如果我将行集定义为elementsthenPageObjectClass.<elements_name>返回一组 Capybara 元素,我可以在这些元素上执行findCapybara 但我不能使用 SitePrismsection.element语法。

使用该elements.find语法似乎有一种代码味道,因为到目前为止,用于访问元素的 CSS 已在 PageObject 类定义中抽象出来——现在我必须在测试代码中引用特定元素的 CSS 才能单击它。

我在这里想念什么?为什么SitePrism在线讨论中使用数据表的例子这么少,为什么没有更多的人遇到这个问题?

我遇到的唯一参考是https://github.com/natritmeyer/site_prism/issues/91

这个建议有什么结果吗?

4

2 回答 2

0

text: 'value'您将在原始呼叫中使用水豚查询选择器。

因此,如果您有 5 个带有 id 的部分,#foo您可以定义section :my_foo, #foo, text: 'fifth'

这只会返回一个部分,瞧。

#detect或者,您可以在找到第一个正匹配后使用 which stop 遍历它们。所以你会做my_sections.detect { |section| section.text == 'First match' }

于 2019-02-22T13:38:55.440 回答
0

要回答我自己的问题...

我想出的唯一方法是向页面对象类添加一个方法来遍历各个部分以找到与给定 id 匹配的元素。

至少这封装了页面对象中元素的 CSS。

似乎应该有更好的方法,或者至少应该将这种方法定义为 SitePrism gem 的一部分?

于 2017-02-23T03:51:00.057 回答