1

我一直在使用 watin 对 webapp 进行集成测试。webapp 使用 fckeditor 作为富文本控件之一。

这是我的 webapp 的 viewsource 的一段 html,其中包括 fckeditor

iframe id="ctl00_HeaderMain_txtSafetyNetDescription___Frame" src="/FCKEditor/editor/fckeditor.html?InstanceName=ctl00_HeaderMain_txtSafetyNetDescription&Toolbar=myApp" width="100%" height="200px" frameborder="no" scrolling="no" /iframe

通过使用 watin 脚本......我能够使用以下代码获取框架对象。

    Frame frame =  ie.Frame(Find.ById("ctl00_HeaderMain_txtSafetyNetDescription___Frame"))  ;

现在我想给 fckeditor 写一些文本。但我不确定如何写信给 fckeditor,因为它是一个框架——有人可以帮我解决这个问题。

谢谢。艾扬格。

4

2 回答 2

2

它可以帮助你~

Frame frame = ie.Frame("blogBody-EditingArea");

frame.ElementWithTag("body", Find.Any).SetAttributeValue("innerText", "现在的心情记录" + DateTime.Now);

于 2011-04-02T08:13:02.633 回答
1

我可以在 firefox 的帮助下找到 fckeditor 的 watin 测试脚本的解决方案。谢谢火狐。使用 fck 编辑器,框架内有一个框架。即暴露了内框但不暴露框架innerhtml。

FireFox 清楚地显示了 dom 树。
Watin 不允许更新 para 的 innerhtml。但是,它公开了一个名为 RunScript(很棒)的方法。我们可以编写一个 JS 并为对象执行它。在这种情况下,它是子框架。这解决了问题

Frame frame = ie.Frame(Find.ById("ctl00_HeaderMain_txtSafetyNetDescription___Frame")) ; Frame ChildFrame = frame.Frame(Find.BySrc("javascript:void(0)")) ; Para para = ChildFrame.Para(Find.ByIndex(0));

// fck 编辑器不标识 para - 因此需要提供 id para.SetAttributeValue("id", "fckpara"); string fckvalue = "Myfckeditor 文本"; 字符串 js = " "; js = js + " document.getElementById('fckpara').innerHTML = '" + fckvalue + "' ;";

        ChildFrame.RunScript(js);

我退出了。感谢大家。

伊耶格纳尔。

于 2009-10-13T16:00:03.993 回答