[英]Watir. How to make a call to an element of page object, inside a line like $browser.link.click?
我們有一個頁面對象元素,例如
link (:test_link, xpath: './/a[@id = '3'])
unordered_list (:list, id: 'test')
和代碼:
def method(elementcontainer, elementlink)
elementcontainer = elementcontainer.downcase.gsub(' ', '_')
elementlink = elementlink.downcase.gsub(' ', '_')
object = send("#{elementcontainer}_element")
object2 = send("#{elementlink}_element")
total_results_1 = object.element.links(id: '3')]").length
total_results_2 = object.element.links(object2).length
end
最后兩行包含了這個謎。
total_results_1能夠獲取ID ='3'的無序列表中包含的鏈接數。
total_results_2不起作用(當然)。 同樣,我不想在代碼中間編寫鏈接的標識。 這是在頁面對象中完成的。
如何在總可行的版本中編寫類似於total_results_2
行的內容?
我可能會誤解這個問題,但是我認為您不需要為所需的內容創建方法。 所有這些都可以使用頁面對象訪問器完成。
假設我們有以下頁面(我將其與您的訪問者進行了匹配,盡管所有鏈接似乎都不會具有相同的ID):
<html>
<body>
<a id="3" href="#">1</a>
<ul id="test">
<li><a id="3" href="#">2</a></li>
<li><a id="3" href="#">3</a></li>
<li><a id="3" href="#">4</a></li>
</ul>
<a id="3" href="#">5</a>
</body>
</html>
如您所做的,您可以使用訪問器定義列表:
unordered_list(:list, id: 'test')
要獲取ID為3但僅在列表中的鏈接,您可以:
links
而不是link
。 這可以通過以下方式完成:
links(:test_link){ list_element.link_elements(:id => '3') }
總共,您的頁面對象將是:
class MyPage
include PageObject
unordered_list(:list, id: 'test')
links(:test_link){ list_element.link_elements(:id => '3') }
end
要查找鏈接數,您可以訪問元素集合並檢查其長度。
browser = Watir::Browser.new
browser.goto('your_test_page.htm')
page = MyPage.new(browser)
puts page.test_link_elements.length
#=> 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.