我面临以下问题。我无法在其中有文本编辑器的iframe中键入文本:这是html:
<iframe class="cke_wysiwyg_frame cke_reset" frameborder="0" style="width: 100%; height: 100%;" aria-describedby="cke_39" title="Текстов редактор за форматиран текст,description1" src="" tabindex="0" allowtransparency="true"> <!DOCTYPE html> <html lang="bg" dir="ltr"> <head> <body class="cke_editable cke_editable_themed cke_contents_ltr" contenteditable="true" spellcheck="false"> <p> <br> </p> </body> </html> </iframe>
到目前为止,这是我所做的,但是测试成功通过,并且文本编辑器中未写入任何文本。可能的解决方案是使用Javascript执行程序,但我对此并不熟悉。
WaitTool.waitForElementPresent(Browser.instance, By.tagName("iframe"), 10); WebElement iframe = Browser.instance.findElement(By.tagName("iframe")); Browser.instance.switchTo().frame(iframe); WebElement description=Browser.instance.findElement(By.xpath("//body[@class='cke_editable cke_editable_themed cke_contents_ltr']")); description.click(); description.sendKeys("someText"); Browser.instance.switchTo().defaultContent();
提前致谢!
有多种实现方法。这是您可能想要看看的文章。
使用Selenium WebDriver测试所见即所得的编辑器
这种方法是您尝试过但没有奏效的方法。请务必设法让你的定位程序<iframe>和<body>正确。否则,我建议使用JavaScriptExecutor更稳定的解决方案。
<iframe>
<body>
JavaScriptExecutor
设置innerHTML
WaitTool.waitForElementPresent(Browser.instance, By.className(“cke_wysiwyg_frame”), 10); WebElement iframe = Browser.instance.findElement(By.className(“cke_wysiwyg_frame”)); Browser.instance.switchTo().frame(iframe);
WebElement description = Browser.instance.findElement(By.cssSelector(“body”)); (JavascriptExecutor)Browser.instance.executeScript(“arguments[0].innerHTML = ‘
使用CKEditor的本机API
// no need to switch iframe (JavascriptExecutor)Browser.instance.executeScript(“CKEDITOR.instances.ckeditor.setData(‘