微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 如何使用java selenium将sendKeys用于ckeditor文本区域

如何将密钥发送到java selenium中的Reach文本区域.

这是包含iframe的HTML代码

<div class="col-sm-11">
<textarea class="ckeditor ng-untouched ng-empty ng-invalid ng-invalid-required ng-dirty ng-valid-parse" ng-class="{true:'validation-error'}[submitted]" placeholder="Enter text ..." ck-editor="" ng-model="NewTicket.Message" name="Message" style="visibility: hidden; display: none;" aria-invalid="true"/>
<div id="cke_Message" class="cke_1 cke cke_reset cke_chrome cke_editor_Message cke_ltr cke_browser_gecko" lang="en" aria-labelledby="cke_Message_arialbl" role="application" dir="ltr">
<span id="cke_Message_arialbl" class="cke_voice_label">Rich Text Editor, Message</span>
<div class="cke_inner cke_reset" role="presentation">
<span id="cke_1_top" class="cke_top cke_reset_all" style="height: auto; -moz-user-select: none;" role="presentation">
<div id="cke_1_contents" class="cke_contents cke_reset" role="presentation" style="height: 200px;">
<span id="cke_50" class="cke_voice_label">Press ALT 0 for help</span>
<iframe class="cke_wysiwyg_frame cke_reset" frameborder="0" src="" style="width: 100%; height: 100%;" title="Rich Text Editor, Message" aria-describedby="cke_50" tabindex="0" allowtransparency="true"/>
</div>
</div>
</div>
<span class="ng-binding ng-hide" style="color:red" ng-show="newTicketForm.Message.$invalid && submitted" aria-hidden="true">Content is required</span>
</div>

我尝试使用iframe类名称使用下面的方法,但我无法向其发送数据.这是Selenium代码

for (String handle002 : driver.getwindowHandles()) 
    {
        driver.switchTo().window(handle002);
        Thread.sleep(500);
          for (String handle001 : driver.getwindowHandles()) 
            {
    driver.switchTo().window(handle001);
    Thread.sleep(500);
  driver.switchTo().frame(driver.findElement(By.className("cke_wysiwyg_frame cke_reset")));
  driver.switchTo().defaultContent();
  WebElement body=driver.findElement(By.className("cke_wysiwyg_frame cke_reset"));
  body.sendKeys("Test");
  driver.switchTo().defaultContent();
            }
    }

enter image description here

解决方法:

我看到你提供的HTML后得到了解决方案,你应该尝试使用如下的webdriverwait: –

webdriverwait wait = new webdriverwait(driver, 10);

wait.until(ExpectedConditions.frametoBeAvailableAndSwitchToIt(By.cssSelector("iframe.cke_wysiwyg_frame.cke_reset")));

WebElement body = wait.until(ExpectedConditions.visibilityOfElementLocated(By.tagName("body")));
body.sendKeys("Test String");

//Now after entering text into texteditor switch back to default content 
driver.switchTo().defaultContent();

原文地址:https://codeday.me/bug/20190702/1352954.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐