मैं कैपिबरा के भीतर एक सीकेईडिटर क्षेत्र कैसे भर सकता हूं, मानते हुए कि मैं कैप्बारा-वेबकिट या सेलेनियम जैसे जावास्क्रिप्ट सक्षम ड्राइवर का उपयोग कर रहा हूं?वेबकिट या सेलेनियम ड्राइवर के साथ कैपिबरा से सीकेडिटर को कैसे भरें
उत्तर
मैं क्या here पाया से प्रेरित होकर, मैं छिपा textarea
पर और CKEditor
वस्तु पर डेटा सेट दोनों के लिए जावास्क्रिप्ट का उपयोग करने का समाधान के साथ आया था। परिस्थितियों के आधार पर पर्याप्त नहीं लग रहा था।
def fill_in_ckeditor(locator, opts)
content = opts.fetch(:with).to_json # convert to a safe javascript string
page.execute_script <<-SCRIPT
CKEDITOR.instances['#{locator}'].setData(#{content});
$('textarea##{locator}').text(#{content});
SCRIPT
end
# Example:
fill_in_ckeditor 'email_body', :with => 'This is my message!'
RSpec + Capybara समर्थन CKEditor उदाहरणों के साथ काम करने के लिए फ़ाइल
module Ckeditor
class Instance
attr_reader :capybara
private :capybara
def initialize(instance_id, capybara)
@instance_id, @capybara = instance_id, capybara
end
def val(value)
capybara.execute_script "jQuery('textarea##{@instance_id}').val('#{value}')"
end
def reload_all
capybara.execute_script "for(var instance in CKEDITOR.instances) { if(CKEDITOR.instances.hasOwnProperty(instance)) {CKEDITOR.instances[instance].destroy(true);} }"
capybara.execute_script "CKEDITOR.replaceAll();"
end
end
end
# usage
# rte = Ckeditor::Instance.new(:my_instance_id, page)
# rte.val 'foo'
# rte.reload_all
# NOTE: page is provided by Capybara
लिए एक छोटा सा इसके अलावा आप नेस्टेड फार्म या एक ही में एक से अधिक textareas उपयोग कर रहे हैं पृष्ठ जेनरेट आईडी बहुत बदसूरत और परीक्षण में लिखने में कठोर हैं (उदाहरण के लिए person_translations_attributes_2_biography
) हाय के लिए इस छोटे से जोड़े के साथ विधि आप आप इस
fill_in_ckeditor 'Biography', with: 'Some text'
जब मैं मार्क-आंद्रे के जवाब को पढ़ता हूं तो मैं बस इस तरह कुछ लिखने वाला था। मुझे खुशी है कि मैंने पढ़ना जारी रखा। धन्यवाद! –
यदि आप छिपे हुए टेक्स्टरेरा तत्व के मूल्य को सेट करने के लिए ckeditor.updateElement() का उपयोग करते हैं (इसे सीधे jquery के साथ सेट करने के बजाय, मार्क-एंड्रे के उत्तर में), तो आपको यादृच्छिक असफल परीक्षण का अनुभव हो सकता है, जब कैपिबरा आपके जेएस पर इंतजार नहीं कर रहा है निष्पादन खत्म करने के लिए। जब आप पृष्ठ जोड़ते हैं।होना चाहिए_फील्ड (लोकेटर, साथ: पैराम्स [: के साथ], दृश्यमान: झूठा) कैपिबरा प्रतीक्षा करता है जब तक छुपा पाठ तत्व अपेक्षित मूल्य न हो। – wnm
मुझे Marc-André's answer के लिए लिख सकते हैं इस
fill_in_ckeditor 'person_translations_attributes_2_biography', with: 'Some text'
के बजाय आईडी
# Used to fill ckeditor fields
# @param [String] locator label text for the textarea or textarea id
def fill_in_ckeditor(locator, params = {})
# Find out ckeditor id at runtime using its label
locator = find('label', text: locator)[:for] if page.has_css?('label', text: locator)
# Fill the editor content
page.execute_script <<-SCRIPT
var ckeditor = CKEDITOR.instances.#{locator}
ckeditor.setData('#{params[:with]}')
ckeditor.focus()
ckeditor.updateElement()
SCRIPT
end
के बजाय उनके लेबल का उपयोग इस तरह ckeditors पता लगा सकते हैं में आइफ्रेम संदर्भ स्विच वेबकिट ड्राइवर
def fill_in_ckeditor(id, with:)
within_frame find("#cke_#{id} iframe") do
find('body').base.send_keys with
end
end
और यह
fill_in_ckeditor 'comment', with: 'This is my message!'
वर्क्स दोनों वेबकिट और सेलेनियम ड्राइवरों
साथ फोन: this capybara-webkit issueमैं एक और तरीका CKEditor इनपुट को भरने के लिए जो आइफ्रेम संदर्भ में परिवर्तन नहीं करता पाया देखें
से प्रेरित- 1. कैपिबरा और सेलेनियम के साथ टिनिमस-रेल संपादक कैसे भरें?
- 2. कैपिबरा के साथ छिपे हुए क्षेत्र को कैसे भरें?
- 3. सेलेनियम वेब ड्राइवर या सेलेनियम आरसी
- 4. कैपिबरा: वेबकिट आईफ्रेम या उसकी सामग्री को खोजने में असमर्थ
- 5. कैपिबरा के साथ ब्राउज़र कैसे बंद करें?
- 6. मुझे कैपिबरा-वेबकिट के साथ रिक्त पृष्ठ क्यों मिलते हैं, लेकिन मानक (गैर-जेएस) ड्राइवर
- 7. कैपिबरा और सेलेनियम
- 8. कैपिबरा सेलेनियम और जावास्क्रिप्ट
- 9. ककड़ी, कैपिबरा और सेलेनियम यादृच्छिक रूप से
- 10. सेलेनियम Webdriver समर्थन JavaFX 2.0 वेबकिट या QT5 वेबकिट (लक्ष्य: नेतृत्वहीन वेबकिट) के लिए
- 11. त्रुटि: कैपिबरा-वेबकिट स्थापित करने में त्रुटि:
- 12. सेलेनियम ड्राइवर: ब्लर का परीक्षण कैसे करें?
- 13. कैपिबरा: एंटर कुंजी
- 14. मैं पाइथन बाइंडिंग के माध्यम से सेलेनियम के साथ HtmlUnit ड्राइवर का उपयोग कैसे करूं?
- 15. सीकेडिटर
- 16. सीकेडिटर
- 17. सेलेनियम ककड़ी/कैपिबरा (बॉक्स के बाहर) के साथ काम नहीं करता है - मैकॉक्स
- 18. मैं पाइथन से सेलेनियम के साथ HTMLUnit ड्राइवर का उपयोग कैसे करूं?
- 19. ककड़ी/कैपिबरा के साथ रेल 3.1/HTML5 आवश्यक फ़ील्ड का परीक्षण कैसे करें?
- 20. सेलेनियम 2 क्रोम ड्राइवर वरीयताएं जावा रूबीबिंडिंग्स
- 21. किसी भी ब्राउज़र को खोलने के बिना जावा में सेलेनियम ड्राइवर के साथ परीक्षण
- 22. डेटासेट को एकाधिक तालिकाओं से कैसे भरें?
- 23. स्ट्रिंग के साथ संरचना भरें []?
- 24. सेलेनियम फ़ायरफ़ॉक्स ड्राइवर को तुरंत चालू करता है
- 25. क्या हेरोकू सीडर पर कैपिबरा-वेबकिट (यानी फोर्कड वेबकिट_सेवर) चलाने के लिए संभव है?
- 26. छोटे वर्ग/आयताकारों के साथ एक वर्ग को कैसे भरें?
- 27. सीकेडिटर: स्पेलचेकर
- 28. कैपिबरा परीक्षण
- 29. पायथन में, सेलेनियम मॉड्यूल। फ़ायरफ़ॉक्स ड्राइवर का उपयोग कैसे करें
- 30. सेलेनियम/कैपिबरा - फ़ायरफ़ॉक्स प्रोफाइल लोड नहीं किया जा सकता
इसके लिए धन्यवाद, यह वास्तव में मुझे एक टन बचाया। एक छोटा सुधार: कैपिबरा 2.1.0 में, 'browser.execute_script' उपरोक्त 'page.execute_script' होना चाहिए। –
@ बालिंटएर्दी: फिक्स्ड, धन्यवाद! –
यहां महान विधि। एक आकर्षण की तरह काम किया ... बस कॉपी और पेस्ट करें। – nfriend21