2011-01-12 6 views
7

मैं वॉटर-वेबड्राइवर का मूल्यांकन कर रहा हूं, यह तय करने के लिए कि क्या मैं इसे अपने ब्राउज़र परीक्षणों (ज्यादातर वॉटर से) के लिए उपयोग करने के लिए स्विच कर सकता हूं और मुख्य चीजों में से एक TinyMCE WYSIWYG संपादकों के साथ बातचीत करने की क्षमता होगी, क्योंकि कई संख्याएं मैं टिनीएमसीई के उपयोग के साथ काम करता हूं। मैं निम्नलिखित समाधान काम कर पाने में कामयाब रहे है -वॉटर-वेबड्राइवर के साथ स्वचालित करते समय tinyMCE को कैसे संभालें?

@browser = Watir::Browser.new(:firefox) 
@browser.goto("http://tinymce.moxiecode.com/tryit/full.php") 
autoit = WIN32OLE.new('AutoITX3.Control') 
autoit.WinActivate('TinyMCE - TinyMCE - Full featured example') 
@browser.frame(:index, 0).body.click 
autoit.Send("^a") # CTRL + a to select all 
autoit.Send("{DEL}") 
autoit.Send("Some new text") 

इस दृष्टिकोण का दोष यह है कि autoit का उपयोग करके, मैं Windows और परीक्षण पार मंच को चलाने की क्षमता पर निर्भर रहने के आकर्षणों में से एक है वेबड्राइवर का।

मैं ऐसे this thread से निम्नलिखित के रूप में कुछ webdriver विशिष्ट समाधान देखा:

String tinyMCEFrame = "TextEntryFrameName" // Replace as necessary 
this.getDriver().switchTo().frame(tinyMCEFrame); 
String entryText = "Testing entry\r\n"; 
this.getDriver().findElement(By.id("tinymce")).sendKeys(entryText); 
//Replace ID as necessary 
this.getDriver().switchTo().window(this.getDriver().getWindowHandle()); 
try { 
    Thread.sleep(3000); 
} catch (InterruptedException e) { 

    e.printStackTrace(); 
} 

this.getDriver().findElement(By.partialLinkText("Done")).click(); 

यह पार मंच काम कर सकते हैं, लेकिन मैं नहीं जानता कि ही कार्यक्षमता Watir- से एक्सेस किया जा सकता है अगर की तरह दिखता है कौन सा webdriver। मेरा सवाल यह है कि, वॉटर-वेबड्राइवर का उपयोग करके TinyMCE में लिखने, हटाने और सबमिट करने का कोई तरीका है, जो किसी विशिष्ट समर्थित ब्राउज़र या ऑपरेटिंग सिस्टम पर निर्भरता लागू नहीं करेगा?

+0

moxiecode भी की TinyMCE मंच में इस प्रश्न पोस्ट करने पर विचार (यह बहुत विशिष्ट है) – Thariama

उत्तर

5

फिलहाल, आपको पहुंचने और अंतर्निहित ड्राइवर उदाहरण प्राप्त करने की आवश्यकता होगी। यह TinyMCE उदाहरण पेज

b = Watir::Browser.new 
b.goto "http://tinymce.moxiecode.com/tryit/full.php" 

d = b.driver 
d.switch_to.frame "content_ifr" 
d.switch_to.active_element.send_keys "hello world" 

यह वास्तव में अच्छी तरह से watir-webdriver में उजागर नहीं किया गया है पर मेरे लिए काम करता है, लेकिन मुझे लगता है कि ठीक कर देंगे। बाद अगली फिल्म (0.1.9) आप में सक्षम होना चाहिए बस करना है:

b.frame(:id => "content_ifr").send_keys "hello world" 
+0

बिल्कुल सही। यह वही जवाब है जिसे मैंने सोचा था कि संभव हो सकता है लेकिन लागू होने के लिए ज्ञान नहीं मिला/नहीं मिला। मैं अगली रिलीज के लिए तत्पर हूं। –

+0

लगभग सही। पिछली सामग्री को कैसे साफ़ करें? एमसीई पहले से ही आबादी है। फोकस शुरुआत में है, इसलिए "\ b" भेजना कुछ भी नहीं करता है। मैं अन्य नियंत्रण अक्षर/अनुक्रम भेजने में विफल रहा। अभी के लिए मुझे नए पाठ के साथ निपटना होगा ... –

+0

वोज्शिएच: यह मेरे मैक - .send_keys [: कमांड, 'ए'], बैकस्पेस, "हैलो वर्ल्ड" पर काम करता है - अन्य प्लेटफार्मों पर, आप शायद चाहते हैं: नियंत्रण इसके बजाए: कमांड। – jarib

0

TinyMCE के नवीनतम संस्करण (वर्तमान में Moxiecode पूर्ण रुप से प्रदर्शित ऊपर के उदाहरण में प्रयोग किया जाता उदाहरण पर विशेष रूप से एक) पर यह आपको लगता है बैकस्पेस के बाद पाठ क्षेत्र का चयन करने के स्क्रिप्ट में एक .click जोड़ने की जरूरत है, तो आप की तरह कुछ का उपयोग करना पड़ सकता है:

browser.frame(:id, "content_ifr").send_keys [:control, "a"], :backspace 
browser.frame(:id, "content_ifr").click 
browser.frame(:id, "content_ifr").send_keys("Hello World") 
2

मैं TinyMCE संपादकों को स्वचालित करने का एक बेहतर तरीका खोजने जावास्क्रिप्ट एपीआई सीधे कॉल करने के लिए है , इस तरह से आप iFrames का उपयोग करने से बचें जो मुझे परेशानी मिलती है।

उदाहरण के लिए:

require 'watir-webdriver' 
b = Watir::Browser.new 
b.goto 'http://tinymce.moxiecode.com/tryit/full.php' 
b.execute_script("tinyMCE.get('content').execCommand('mceSetContent',false, 'hello world');") 

देखें: http://watirwebdriver.com/wysiwyg-editors/

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