如何在selenium中获取和设置文本编辑器值

 mobiledu2502856973 发布于 2023-01-17 14:42

我在网页上有文本编辑器,我需要在c#中使用selenium脚本来填充它的值.我知道怎么做文本框.我已经从文本框中的Set值检查过程,但是当我为文本编辑器尝试了相同的过程时,它不起作用,我想获取并设置编辑器的值.请帮帮我怎样才能做到这一点.

获取文本框文本的代码是:

IWebDriver firefoxDriver = new FirefoxDriver();
IWebElement passwordTextBox = Driver.FindElement(By.Id("passwordTextBox"));
passwordTextBox.Clear();
passwordTextBox.SendKeys("password");

我已经尝试了下面的代码来设置编辑器的值

IWebElement detailFrame = driver.FindElement(By.CssSelector("#cke_1_contents .cke_wysiwyg_frame"));
driver.SwitchTo().Frame(detailFrame);
Thread.Sleep(1000);
var body = driver.FindElement(By.TagName("body")); // then you find the body
Thread.Sleep(1000);
body.SendKeys("hiiiiiiii");

Yi Zeng.. 8

看起来你正在尝试向CKEditor发送密钥.

请仔细阅读本文:使用Selenium WebDriver测试WYSIWYG编辑器

直接发送密钥

这种方法是你尝试过但不起作用的方法.众所周知,Firefox存在问题.您的代码适用于PhantomJS或Chrome.请注意,这hiiiiiiii将导致编辑器中的实际文本,而不是span元素.

设置innerHTML

IWebElement detailFrame = driver.FindElement(By.CssSelector("#cke_1_contents .cke_wysiwyg_frame"));
driver.SwitchTo().Frame(detailFrame);

var body = driver.FindElement(By.TagName("body")); // then you find the body

var executor = driver as IJavaScriptExecutor;
executor.ExecuteScript("arguments[0].innerHTML = 'hiiiiiiii'", body);

使用CKEditor的本机API

var executor = driver as IJavaScriptExecutor;
executor.ExecuteScript("CKEDITOR.instances.ckeditor.setData('hiiiiiiii");


Deepak.. 7

IWebDriver firefoxDriver = new FirefoxDriver();
IWebElement passwordTextBox = Driver.FindElement(By.Id("passwordTextBox"));
passwordTextBox.Clear();
passwordTextBox.SendKeys("password");

在上面的代码中将第二行更改为

IWebElement passwordTextBox = firefoxDriver.FindElement(By.Id("passwordTextBox"));

另外检查你正在搜索的元素的id By.Id("passwordTextBox")是否正确使用xpath/css

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有