WebDriverException:tinyMCE未在selenium web驱动程序java中定义

时间:2015-04-10 09:44:54

标签: java javascript selenium

driver.switchTo().frame("tinymce_iframe");    
String script="var editor=tinyMCE.get('tinymce_textarea');";    
JavascriptExecutor js=(JavascriptExecutor) driver;    
js.executeScript(script);    

我想执行这个javascript代码但是我得到了WebDriverException,没有定义tinyMCE。

<html>  
<script type="text/javascript" src="tinymce3.5.1/tinymce/jscripts/tiny_mce/tiny_mce.js"></script>

      <script type="text/javascript">
       tinyMCE.init({
        theme : "advanced",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
        mode : "exact",
        elements : "tinymce_textarea"
      });
     </script>  
      <body>

     <textarea cols="80" rows="10" id="tinymce_textarea" name="tinymce_textarea"> 

         &lt;h1&gt;<span id="1">Article</span> <span id="2">Title</span>&lt;/h1&gt;
         <p><span id="3">Here's</span> <span id="4">some</span> <span id="5">sample</span> <span id="6">text</span> <span id="7">Hello</span> <span id="8" >World.</span> </p>
           </textarea>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

我不知道您是否解决了此问题。这是一些解决问题的方法,因为我没有使用tinyMCESelenium

在加载iframe时,这似乎是时间问题。我正在考虑做一个事件侦听器类型的事情,而不是一个计时器,但是当我包装init函数时,它可以正常工作。我从此post here找到了提示:

tinyMCE.execCommand('mceRemoveEditor', false, 'editorId');
setTimeout(function() {
    tinyMCE.init(myconfig);
}, 3000);

或者,如果您能够检查适当的编辑器元素,请尝试使用setInterval()

var IntID = setInterval(function () { // Repeated check for Editor
    if (($('.tinymce_textarea').length) > 0) { // Editor element length
        tinyMCE.init({
            theme : "advanced",
            theme_advanced_toolbar_location : "top",
            theme_advanced_toolbar_align : "left",
            mode : "exact",
            elements : "tinymce_textarea"
        });
        clearInterval(IntID); // This will clear timer for editor check
    }
}, 10);