我的网页上有文本编辑器,我需要使用 c# 中的 selenium 脚本填充其值。我知道如何为文本框执行此操作。我已经检查了流程在文本框中设置值 https://stackoverflow.com/questions/10557196/using-selenium-webdriver-in-c-how-do-i-select-a-text-box-to-write-in-then-wri但是当我尝试对文本编辑器执行相同的过程时,它不起作用,我想获取并设置编辑器的值。请帮助我我该怎么做。
获取文本框文本的代码是:
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("<span>hiiiiiiii<span>");
看起来您正在尝试将密钥发送到 CKEditor。
请仔细阅读这篇文章:使用 Selenium WebDriver 测试所见即所得编辑器 http://yizeng.me/2014/01/31/test-wysiwyg-editors-using-selenium-webdriver/
这种方法是您尝试过的方法,但没有成功。已知 Firefox 存在问题。您的代码应该适用于 PhantomJS 或 Chrome。注意<span>hiiiiiiii<span>
将在编辑器中生成实际文本,而不是 span 元素。
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 = '<span>hiiiiiiii<span>'", body);
var executor = driver as IJavaScriptExecutor;
executor.ExecuteScript("CKEDITOR.instances.ckeditor.setData('<span>hiiiiiiii<span>");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)