Java 在SeleniumWebDriver中查找CK编辑器并向其发送文本
嗨,我正试图通过SeleniumWebDriver代码(Java)为我的项目找到CK编辑器。但每当我尝试使用SendKeys()方法时,它对我就不起作用。 下面是CK编辑器的屏幕截图和HTML代码 下面是代码Java 在SeleniumWebDriver中查找CK编辑器并向其发送文本,java,selenium-webdriver,Java,Selenium Webdriver,嗨,我正试图通过SeleniumWebDriver代码(Java)为我的项目找到CK编辑器。但每当我尝试使用SendKeys()方法时,它对我就不起作用。 下面是CK编辑器的屏幕截图和HTML代码 下面是代码 if(driver.findElement(By.cssSelector("iframe#scayt_8")).isEnabled()) { WebElement iframe = driver.findElement(By.cssSelector("iframe#scayt_8")
if(driver.findElement(By.cssSelector("iframe#scayt_8")).isEnabled())
{
WebElement iframe = driver.findElement(By.cssSelector("iframe#scayt_8"));
System.out.println("Frame Enabled");
if(driver.findElement(By.xpath("//iframe[@id = 'scayt_8']")).isDisplayed())
{
System.out.println("Frame Displayed");
driver.switchTo().frame(iframe);
iframe.clear();
System.out.println("Clicking frame");
iframe.click();
iframe.sendKeys("Hello!!");
}
}
请帮助我找到CK编辑器并向其发送文本。我认为iframe是基于cssSelector进行搜索的,但我认为它应该基于id?这是斯盖特8号。您是否可以尝试使用以下代码来获取iframe而不是cssSelector:
driver.FindElement(By.TagName("iframe"))
切换到iframe后,尝试通过iframe中的段落标记名来定位webelement,如下所示:-
WebElement body=driver.findElement(By.tagName("p"));
然后尝试使用此webelement发送密钥:
body.sendKeys("Hello!!");
您可能需要切换到内联帧来定位它
WebElement editorFrame = driver.findElement(By.id("scayt_8"));
driver.switchTo().frame(editorFrame);
WebElement body = driver.findElement(By.tagName("body"));
body.clear();
body.sendKeys("some text");
我们在《实践中的SeleniumWebDriver》一书的第3章中提供了与编辑器协作的技术
WebElement iframe = driver.findElement(By.tagName("iframe")); driver.switchTo().frame(iframe);
WebElement tinymce = driver.findElement(By.tagName("body"));
tinymce.clear();
tinymce.sendKeys("Hello, ckeditor!");;
这将帮助您在CKeditor中发送文本。试试这个。它将工作我可以使用cssSelector定位帧,但问题是我无法向它发送关键帧。网页中也有2个框架,但我没有发现任何像body这样的内联框架。效果很好,谢谢。我只想添加一件事,在sendKeys之后,我必须运行“driver.switchTo().parentFrame();”,否则测试的其余部分将无法工作