gpt4 book ai didi

page-object-gem - 使用页面对象模型访问嵌套的 div

转载 作者:行者123 更新时间:2023-12-01 23:56:00 25 4
gpt4 key购买 nike

我无法访问嵌套的 div。

这是我的场景。我需要访问内部 div 中的总数。有人可以在这里阐明一些问题吗。

<div id="RequestSend">
<div class="title">
Requests Sent
</div>
<div class="total">
10
</div>
</div>
<div id="RequestReceived">
<div class="title">
Requests Received
</div>
<div class="total">
20
</div>
</div>

我尝试了以下方法,但没有成功。

    Approach 1:

prof.rb
=======

div(:total_count, {:class => 'total'})
div(:request_send, {:id => 'RequestSend'})

prof_spec.rb
=============
page.request_send_element.total_count.should eq 10

Output:
NoMethodError: undefined method `total_count' for #<Selenium::WebDriver::Element:0x....>


Approach 2:

prof.rb
=======
divs(:total_count, {:class => 'total'})

prof_spec.rb
============
total_count[0] # for first
total_count[1] # for second

Please note I am a new user to page object.

最佳答案

解决方案 1 - block

最直接的方法是在定义访问器时使用 block 。这允许您指定元素的路径 - 即允许您将搜索范围限定到特定元素。

最简单的方法是将一堆 div_element1 方法链接在一起:

div(:request_send_total){
div_element(:id => 'RequestSend').div_element(:class => 'total')
}
div(:request_received_total){
div_element(:id => 'RequestReceived').div_element(:class => 'total')
}

或者,如果您可能需要在 RequestSend/RequestReceived div 中查找不同的内容,我会专门为每个 div 创建一个访问器。然后总计的访问器将调用父元素:

div(:request_send, :id =>'RequestSend')
div(:request_send_total){
request_send_element.div_element(:class => 'total')
}
div(:request_received, :id =>'RequestReceived')
div(:request_received_total){
request_received_element.div_element(:class => 'total')
}

在这两种情况下,您的页面 API 都是:

page.request_send_total
#=> 10
page.request_received_total
#=> 20

解决方案 2 - 小部件

一个更复杂的实现,但更好的页面 API,将是使用小部件。基本上这就像创建一个具有自己特定方法的元素类型。

您可以创建一个请求小部件,例如:

class Request < PageObject::Elements::Div
def total
div_element(:class => 'total').text
end
end
PageObject.register_widget :request, Request, :div

然后,您的页面对象将使用已注册的 request 访问器:

request('request_send', :id => 'RequestSend')
request('request_received', :id => 'RequestReceived')

最后,您将获得总值:

page.request_send_element.total
#=> 10
page.request_received_element.total
#=> 20

关于page-object-gem - 使用页面对象模型访问嵌套的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23663564/

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