在我添加测试的项目中,我有一些难以“获取”的元素。
我的文本区域的 html :
<div class="quote">
<div class="clearfix">
<div class="icon"></div>
<div class="text">
<span class="yui3-widget yui3-inputwidget yui3-textareawidget yui3-textareawidget-focused" style="">
<span class="yui3-textareawidget-content">
<textarea name="" placeholder=""></textarea>
</span>
</span>
</div>
<div class="author">
(...) other text_field
</div>
</div>
</div>
</div>
目前,我使用这一行来设置值
@browser.element(:css => ".quote textarea").send_keys "test"
在 PageObject 中,我应该声明该元素并使用它:
# declaration at the top
element(:quote_text, :css => ".quote textarea")
# use it where I need
self.quote_text = "text"
但当我使用时出现此错误:
undefined method `quote_text=' for #<PublishPage:0x33843c0> (NoMethodError)
我哪里错了?
当你这样做时element(:quote_text, :css => ".quote textarea")
,它只会生成方法(参见doc http://rubydoc.info/github/cheezy/page-object/master/PageObject/Accessors#element-instance_method):
quote_text #Returns the text of the element
quote_text_element #Returns the element
quote_text? #Returns if the element exists
由于您知道它是一个文本区域并且需要文本区域方法,因此您应该将其声明为:
text_area(:quote_text, :css => ".quote textarea")
这将为您提供quote_text=
您期望的方法(参见doc http://rubydoc.info/github/cheezy/page-object/master/PageObject/Accessors#text_area-instance_method).
Update- 由于 Watir-Webdriver 仅支持元素类的 css 选择器(请参阅第124期 https://github.com/watir/watir-webdriver/issues/124),您还需要更改定位器。两个替代声明quote_text
这似乎有效:
#Using a block to locate the element:
text_area(:quote_text){ div_element(:class => "quote").text_area_element }
#Using xpath:
text_area(:quote_text, :xpath => '//div[@class="quote"]//textarea')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)