2012-09-21 46 views
2

在我添加測試的項目中,我有一些元素很難「獲取」。
我textarea的HTML:如何在PageObject中使用CSS獲取元素

<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) 

我在哪裏錯了?

+0

當我嘗試 self.quote_text_element.send_keys 「測試」 我得到另一個錯誤: (EVAL):1:語法錯誤,意外 '(',期待$ end {:css =>「。quote textarea」}(identifier) ^(SyntaxError) – Fabrice31

回答

4

當你element(:quote_text, :css => ".quote textarea"),只會生成方法(見doc):

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)。

更新 - 由於的Watir-webdriver的只支持在元素類CSS選擇器(見Issue 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') 
+0

另一個錯誤:無效屬性:無(Watir :: Exception :: Miss ingWayOfFindingObjectException)(eval):1:在'process_watir_call' 我會再次搜索,這個解釋讓我感覺更接近目標。 – Fabrice31

+0

啊對了。第二個例外是因爲Watir-Webdriver目前不支持使用元素類[問題124](https://github.com/watir/watir-webdriver/issues/124)以外的css定位器。 –

+0

完美的更新。我不知道可以在PAgeObject定義中使用塊。很有用 :) – Fabrice31

0

我不認爲你需要self那裏(但我可能是錯的)。

試試這個

quote_text = "text" 

代替

self.quote_text = "text" 
+0

我在我的頁面對象代碼中使用自我「無處不在」 如果我刪除了自己:它不會改變任何內容 On the quote_text =文本,它不會更好 和其他地方一樣,它的工作原理如下 – Fabrice31

相關問題