我正在尝试使用 SELENIUM 向 TinyMCE 添加文字。我已经能够使用以下代码添加文本:
$('iframe').last().contents().find('body').text('401c484b-68e4-4bf2-a13d-2a564acddc04');
TinyMCE 编辑器显示 GUID 。但是,当Selenium单击提交按钮时,我收到错误:Please, enter a text.
。
我注意到,当Selenium正在运行时,我只需要在 TinyMCE 上单击(手动),然后在单击更新按钮时返回文本。
那么如何使用 javascript 或 jQuery 点击 TinyMCE ?
答案 0 :(得分:1)
我的答案来自this post @SiKing指出的。
res <- RcppRoll::roll_mean(as.matrix(y), 3, na.rm=T)
colnames(res) <- colnames(y)
res
# V1 V2 V3 V4 V5 V6 V7 V8 V9
#[1,] 16 17 18 19 20 21 22 23 16.5
#[2,] 31 32 33 34 35 36 37 38 39.0
public void EnterTextInTinyMCE(int n, string noteText, string escapeElementCss)
{
driver.SwitchTo().Frame(n - 1);
IWebElement body = driver.FindElement(By.XPath("//body"));
body.Click();
Wait(3);
IJavaScriptExecutor jse = driver as IJavaScriptExecutor;
jse.ExecuteScript("arguments[0].innerHTML = '" + noteText + "'", body);
driver.SwitchTo().DefaultContent();
Wait(3);
ClickLinkByFullCSS(escapeElementCss); //--- I ADDED THIS LINE TO FORCE
//--- THE IFRAME ELEMENT TO LOSE FOCUS
}
只是我在基类中定义的一种方法,而ClickLinkByFullCSS();
只是escapeElementCss
之外的一个元素。我选择了标题栏,因为它只是一个没有任何按钮的div,以避免点击可能产生事件的元素。
事实上,切换回DefaultContent会将焦点拉离编辑器。所以我只是客户端编辑器之外的元素。这迫使编辑失去焦点,更新成功。