gpt4 book ai didi

ruby - 如何在 PageObject 中对已注册的小部件使用多个访问器?

转载 作者:太空宇宙 更新时间:2023-11-03 16:48:47 24 4
gpt4 key购买 nike

page-object gem自动 generates multiple accessors .

例如,除了 link 之外,您还可以使用 links,例如:

class MyPage
include PageObject

links(:tag_link, :css =>".tags-link a")
end

...

page.tag_link_elements.each do |link|
puts link.text
end

问题是,如何为 custom registered widgets 实现相同的“多访问器”功能?

最佳答案

注册小部件时,小部件集合方法对页面对象可用。与标准元素集合类似,集合方法是在末尾添加“s”的小部件名称(尽管这可以在每个小部件的基础上被覆盖)。请注意,此功能是在页面对象 gem 的 1.0.2 版中添加的(即相当新)。

例如,假设页面 HTML 如下:

<html>
<body>
<div class="heading"><span>Title</span></div>
<div class="item"><span>text1</span></div>
<div class="item"><span>text2</span></div>
<div class="item"><span>text3</span></div>
</body>
</html>

我们想要为“item”div 定制一个小部件。我们可以注册一个小部件来定义项目:

class Item < PageObject::Elements::Div
def description
span_element.text
end
end

PageObject.register_widget :item, Item, :div

在页面类中,:item 将定义访问单个小部件的方法。复数名称 :items 将定义小部件的集合:

class MyPage
include PageObject

items(:item, class: 'item')
end

要使用小部件集合,将创建一个_elements 方法(类似于标准集合)。在这种情况下,它将被称为 item_elements:

page = MyPage.new(browser)
p page.item_elements.length
#=> 3
p page.item_elements.map(&:description)
#=> ["text1", "text2", "text3"]

关于ruby - 如何在 PageObject 中对已注册的小部件使用多个访问器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27646458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com