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">
<h1><span id="1">Article</span> <span id="2">Title</span></h1>
<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>
答案 0 :(得分:0)
我不知道您是否解决了此问题。这是一些解决问题的方法,因为我没有使用tinyMCE
和Selenium
。
在加载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);