2012-07-20 12 views
8

मुझे टिनिमस फॉर्म का परीक्षण करने के लिए कैपिबारा का उपयोग करने में परेशानी है। मैं tinymce-rails का उपयोग कर रहा हूं और मेरे फॉर्म में 7 संपादक हैं। इसके अलावा मैं tinymce के साथ asciimath प्लगइन का उपयोग कर रहा हूँ।कैपिबरा और सेलेनियम के साथ टिनिमस-रेल संपादक कैसे भरें?

सब ठीक काम करता है, लेकिन मैं tinymce संपादक भरने के लिए परीक्षण लिखने में असमर्थ हूं।

यहाँ कैसे मेरे कदम परिभाषा कोड, की तरह दिखता है बहुत क्या वर्णन किया गया है here के समान है:

within_frame("content_ifr") do 
    editor = page.find_by_id('tinymce') 
    editor.native.send_keys 'test' 
end 

जब मैं निम्नलिखित चलाने समस्या है:

editor.native.clear   # works, clear the editor area, I'm testing this with pry 
editor.native.send_keys :tab # works, moves focus to next input 
editor.native.send_keys 'test' # returns "", nothing happens, nothing in editor 

तो clear और send_keys :tab काम जैसा सोचा था। लेकिन मैं कोई स्ट्रिंग नहीं भेज सकता। send_keys फ़ंक्शन हमेशा खाली स्ट्रिंग लौटा रहा है, और जब मैं pry का उपयोग करके परीक्षण करता हूं तो कुछ भी नहीं होता है।

यहां क्या गलत हो रहा है? और मैं समस्या को डीबग/जांच कैसे कर सकता हूं?

धन्यवाद।

उत्तर

2

here वर्णित क्रोम पर स्विचिंग मेरी समस्या हल हो गई।

स्पष्ट रूप से समस्या फ़ायरफ़ॉक्स ड्राइवर में एक बग से संबंधित है।

फिर भी मुझे लगता है कि यह फ़ायरफ़ॉक्स के लिए एक वैध सवाल है।

+0

देखें http://code.google.com/p/selenium/issues/detail?id=3569 –

+0

एंड्री की मदद करने के लिए धन्यवाद। मैंने उस पेज को भी देखा और क्रोम पर स्विच करने का फैसला किया। –

0

send_keys से एक iframe कि TinyMCE पाठ क्षेत्र इनपुट शामिल करने के लिए स्विच करने के लिए प्रयास करें, और:

# +session+ is an instance of Capybara::Session class 
browser = session.driver.browser 
browser.switch_to.frame(iframe_id) 
editor.native.send_keys(text) 
browser.switch_to.default_content 
+0

धन्यवाद। लेकिन इससे मदद नहीं मिली। मैं iframes में नेविगेट कर सकता हूं, संपादकों का चयन कर सकता हूं, बिना किसी समस्या के अपने इनपुट को साफ़ कर सकता हूं .. या यहां तक ​​कि मैं भेज सकता हूं: टैब कुंजी। मेरी समस्या यह है कि मैं फ़ायरफ़ॉक्स में 'स्ट्रिंग' नहीं भेज सकता। इसके अलावा सब कुछ क्रोम के साथ काम कर रहा है। –

4

मुझे पता है कि यह एक पुराने सवाल है, लेकिन इस समस्या को हल करने के लिए और साथ ही कोशिश करते हुए मैं सिर्फ यह पाया।

हालांकि मूल प्रश्न में कहा गया है कि उसके पास उसी पृष्ठ पर 7 टिनिम्स है, मुझे लगता है कि मेरा समाधान उसके लिए भी काम कर सकता है लेकिन मुझे पता है कि यह मेरे मामले के रूप में एक टिनिमास होने पर काम करेगा।

मेरे अनुरोध कल्पना में मैं इस प्रयोग किया है:

page.execute_script ('$ (tinymce.editors [0] .setContent ("मेरे यहाँ सामग्री"))')

page.execute_script साथ jQuery फंक्शन चलाने के लिए इसे बताओ। इसके बाद यह पहला tincymce संपादक पाता है और सामग्री सेट करता है।

मेरे लिए एक आकर्षण की तरह काम किया। मुझे लगता है कि अगर एक से अधिक tinymce हैं तो इसे अपनी स्थिति से बुलाया जा सकता है।

संबंधित मुद्दे