【问题标题】:Watin - How to set value of textarea (HTML editor)?Watin - 如何设置 textarea(HTML 编辑器)的值?
【发布时间】:2011-11-04 00:04:33
【问题描述】:

我正在尝试使用以下代码设置文本字段的值:

if (ie.TextField(Find.ById("testField")).Exists)
   ie.TextField(Find.ById("testField")).Value = "Test";

代码通过且未引发错误,但文本字段未填充该值。

执行以下行时出现异常:

ie.TextField(Find.ById("testField")).Focus()

textarea 是一个 tiny_mce 编辑器,其中一个 html 属性是:style="display: none;"...

任何想法如何使用 Watin 修改此类字段的值?

谢谢。

【问题讨论】:

    标签: tinymce textarea watin


    【解决方案1】:

    第一个 tinymce 不是文本区域。 tinymce 在初始化时隐藏您的 textarea 并创建一个 contenteditable iframe,然后用于允许文本编辑、样式等... 其次,如果您想将编辑器内容写回隐藏的文本区域,您可以使用 tinymce.get('testField').triggerSave();.

    另一种设置 textarea 值的方法是:
    tinymce.get('testField').getDocumentById('testField').value = 'new value';

    如果您想将内容直接写入您的 tinymce 编辑器,您可以选择以下选项

    tinymce.get('testField').setContent('my_new_content'); // replaces the editors content
    

    tinymce.get('testField').execCommand('mceInsertContent',false, 'my_content_to_be_added'); // adds the content at the carat postion
    

    【讨论】:

    • 非常感谢。我不太确定 ed.getDocumentById 中的“ed”是什么意思 - 我如何获得这个元素?对于其他解决方案:如何获取 tinymce 对象?不能使用 Watin 更改“正文”文本区域。我可以访问“body_ifr”IFrame(这是存储文本的元素),使用:ie.Frame(Find.ById("body_ifr")).Text; -- 但是不知道怎么修改文字?
    • 编辑器的 HTML 看起来像(我删除了工具栏代码):
    • 我用正确的编辑器对象替换了“ed”。 tinymce 初始化后,tinymce 对象应该是全局对象变量
    【解决方案2】:

    这是使用 Watin Eval 函数处理此问题的简单方法:

    var js = "tinyMCE.get('body').setContent('" + bodyCont + "')";
    var s = ie.Eval(js);
    

    'body' 需要替换为由 tinymce 隐藏的 textarea 的 id - 在浏览器窗口中执行“查看源代码”以找到此 id。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 2020-02-17
      • 1970-01-01
      • 2021-12-08
      相关资源
      最近更新 更多