小编Tro*_*roy的帖子

在Firefox 14中使用Selenium Webdriver和CkEditor

我正在使用Java 14中的Webdriver和Firefox 14.

我的问题是我似乎无法让webdriver与CkEditor很好地配合.我已经找到了解决方案但无法在Firefox 13或14中工作.这些是我尝试过的解决方案:

  1. 正常的sendKeys拦截

    textArea.sendKeys();
    
    Run Code Online (Sandbox Code Playgroud)

    要么

    textArea.click();
    textArea.sendKeys();
    
    Run Code Online (Sandbox Code Playgroud)

    结果:此代码不会在CkEditor中生成任何文本

  2. 来自Selenium的代码问题3890

    d.get("http://ckeditor.com/demo");
    WebElement iframe = d.findElement(By.tagName("iframe"));
    d.switchTo().frame(iframe);
    WebElement tinymce = d.findElement(By.tagName("body"));
    tinymce.clear();
    tinymce.sendKeys("Hello, ckeditor!");
    
    Run Code Online (Sandbox Code Playgroud)

    结果:此代码将转到站点并清除编辑器,但不会将任何文本放入CkEditor实例中.

  3. AdvancedUserInteractions - 例如.多个变体中的Actions()

    textArea.click();
    new Actions(driver).sendKeys("Hello, ckeditor!").build().perform();
    
    Run Code Online (Sandbox Code Playgroud)

    new Actions(driver).sendKeys(textArea, "Hello, ckeditor!").build().perform();
    
    Run Code Online (Sandbox Code Playgroud)

    new Actions(driver).click(textArea).sendKeys("Hello, ckeditor!").build().perform();
    
    Run Code Online (Sandbox Code Playgroud)

    结果:这些不会在CkEditor中生成任何文本

  4. 切换iframe(根据上面的问题3890)并使用AdvancedUserInteractions

    代码类似于:

    driver.switchTo().frame(iframe);
    textArea.click();
    new Actions(driver).sendKeys("Hello, ckeditor!").build().perform();
    
    Run Code Online (Sandbox Code Playgroud)

    结果:引发错误" c.value未定义 "

  5. 使用Javascript和CkEditor Api

    JavascriptExecutor js = (JavascriptExecutor) d;
    System.out.println("[debug] Set Text: " + setText);
    js.executeScript("CKEDITOR.instances.editor1.setData('<p> "+ setText +"</p>');");
    
    Run Code Online (Sandbox Code Playgroud)

    结果:当" org.apache.commons.lang.StringEscapeUtils.escapeHtml …

firefox webdriver ckeditor selenium-webdriver

5
推荐指数
1
解决办法
4432
查看次数

标签 统计

ckeditor ×1

firefox ×1

selenium-webdriver ×1

webdriver ×1