如何在 iframe 是动态的 tinymce 中发送密钥

本文关键字:tinymce 密钥 动态 iframe | 更新日期: 2023-09-27 18:33:20

如何将密钥发送到同一屏幕上的 3 个TinyMCE字段,并且使用 Selenium 网络驱动程序c# Iframe ID是动态的?

如果帧的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>

谢谢!

如何在 iframe 是动态的 tinymce 中发送密钥

嗨,

只有当这是页面上唯一的 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')]

希望这有帮助

然后尝试以下代码进行切换一次,并在帧上执行所有操作:

Driver.SwitchTo().Frame(Driver.FindElement(By.Xpath("//iframe[contains(@title, 'Área de texto formatado.')]")));