2011-01-12 18 views
7

Ben bir takım olarak, TinyMCE WYSIWYG editörleri ile iletişim yeteneği olurdu benim tarayıcı (çoğunlukla Watir itibaren) testler ve anahtar şeylerden biri için kullanmaya geçebilirsiniz karar vermek, Watir-webdriver değerlendiriyorum Çalıştığım uygulamalar TinyMCE. aşağıdaki çözüm çalışma almak başardınız -watir-webdriver ile otomatikleştirirken tinyMCE nasıl kullanılır?

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

Bu yaklaşımın dezavantajı, autoit kullanarak, ben Windows ve testler farklı platformlarda çalışmasını edilebilmesine bağlıdır kalmasıdır konumlar biridir webdriver.

Böyle this thread aşağıdaki gibi bazı webdriver özel çözümler fark: Bu çapraz platform işe yarayabilecek ama aynı işlevselliği Watir- içinden ulaşılabilir eğer bilmiyorum benziyor

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

webdriver. Sorum şu: özel bir desteklenen tarayıcı veya işletim sistemine bağımlılığı zorlamayacak olan watir-webdriver kullanarak TinyMCE'ye yazmak, silmek ve göndermek için bir yol var mı?

+0

çok Moxiecode ait tinymce forumda bu soruyu yayınlamayı düşünün (bu çok özel) – Thariama

cevap

5

Şu anda içeriye erişip temel sürücü örneğini almanız gerekir. Bu TinyMCE örnek sayfa

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" 

Bu aslında iyi watir-webdriver açığa çıkmadığı üzerinde benim için çalışıyor, ama bunu düzeltmek gerekir. Bir sonraki sürümü (0.1.9) Eğer mümkün olmalıdır sonra basitçe yapmak için: TinyMCE daha yeni sürümleri (şu anda yukarıdaki örnekte kullanılan Moxiecode Tam Seçme örneği özellikle biri) üzerinde

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

mükemmel. Bu tam olarak mümkün olabileceğini düşündüğüm ancak uygulama bilgisinin eksik olduğunu/bulamadığını düşündüğüm cevaptır. Bir sonraki sürüm için sabırsızlanıyorum. –

+0

Neredeyse mükemmel. Önceki içerik nasıl temizlenir? MCE zaten dolduruldu. Odak başlangıçta, yani "\ b" göndermek hiçbir şey yapmıyor. Diğer kontrol karakterlerini/dizilerini gönderemedim. Şimdilik yeni bir metin hazırlamam gerekiyor ... –

+0

Wojciech: Bu benim Mac - .send_keys [: komut, 'a'], backspace, "merhaba dünya" üzerinde çalışıyor - diğer platformlarda, muhtemelen isteyeceksiniz: kontrol yerine: komut. – jarib

0

sizi görünüyor gerisilme sonra metin alanını seçmek için komut dosyası bir .Tıklama eklemem gerekiyor, bu yüzden böyle bir şey kullanmak gerekebilir:

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

Ben TinyMCE editörleri otomatik hale daha iyi bir yol bulmak doğrudan JavaScript API çağırmaktır Bu şekilde, zahmetli bulduğum iFrame'leri kullanmaktan kaçınıyorsunuz. Örneğin

:

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');") 

Bkz: http://watirwebdriver.com/wysiwyg-editors/