我正在评估Watir-webdriver,以决定我是否可以切换到使用它进行我的浏览器测试(主要来自Watir),其中一个关键的事情就是能够与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,跨平台运行测试的能力是webdriver的吸引力之一.
我注意到一些特定于webdriver的解决方案,例如this thread中的以下内容:
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中访问相同的功能.我的问题是,有没有办法使用watir-webdriver编写,删除和提交到TinyMCE,这不会强制依赖特定支持的浏览器或操作系统?
目前,您需要进入并获取底层驱动程序实例.这在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"