如何将密钥发送到同一屏幕上的3个TinyMCE
字段,Iframe ID
使用selenium webdriver c#
是动态的?
如果框架的id
不是动态的,则以下代码有效:
Driver.SwitchTo().Frame("ea05aa0a-668b-4a08-9770-221262e77b29_ifr");
Driver.FindElement(By.Id("tinymce")).SendKeys("hello 1");
Driver.SwitchTo().DefaultContent();
Driver.SwitchTo().Frame("c45c67ae-d33b-4ec3-be2e-12a6d40b14ab_ifr");
Driver.FindElement(By.Id("tinymce")).SendKeys("hello 2");
Driver.SwitchTo().DefaultContent();
Driver.SwitchTo().Frame("bbfce656-ea5e-4f01-b409-437d0c60e187_ifr");
Driver.FindElement(By.Id("tinymce")).SendKeys("hello 3");
Driver.SwitchTo().DefaultContent();
代码字段TinyMCE
1:
<div id="mce_44" class="mce-edit-area mce-container mce-panel mce-stack-layout-item" tabindex="-1" hidefocus="1" style="border-width: 1px 0px 0px;">
<iframe id="ea05aa0a-668b-4a08-9770-221262e77b29_ifr" frameborder="0" src="javascript:""" allowtransparency="true" title="Área de texto formatado. Pressione ALT-F9 para exibir o menu…a exibir a barra de ferramentas ou ALT-0 para exibir a ajuda" style="width: 100%; height: 100px; display: block;">
#document
<!DOCTYPE html>
<html webdriver="true">
<head></head>
<body id="tinymce" class="mce-content-body " contenteditable="true" onload="window.parent.tinymce.get('ea05aa0a-668b-4a08-9770-221262e77b29').fire('load');" spellcheck="false"></body>
谢谢!
答案 0 :(得分:0)
嗨,你可以尝试这个,只有这是页面上唯一的iFrame,理想情况下它会像
IWebElement iFrameElement = driver.findElement(By.Xpath("//*[contains(@class,'edit-
area')]/child:::iframe"));
Driver.SwitchTo().Frame(iFrameElement);
或使用不同的Xpath表达式对iFrame进行数学运算,如
//*[contains(@class,'edit-area')]/preceding:::iframe[contains(@id,'ifr')]
希望这有帮助
答案 1 :(得分:0)
尝试使用此代码切换一次,然后对框架执行所有操作:
Driver.SwitchTo().Frame(Driver.FindElement(By.Xpath("//iframe[contains(@title, 'Área de texto formatado.')]")));