gpt4 book ai didi

c# - 如何在 Selenium 中获取和设置文本编辑器值

转载 作者:太空狗 更新时间:2023-10-29 22:09:14 26 4
gpt4 key购买 nike

我在网页上有文本编辑器,我需要使用 C# 中的 selenium 脚本填充它的值。我知道如何为文本框做这件事。我已经检查了Set value in textbox的过程但是当我为文本编辑器尝试相同的过程时,它不起作用,我想获取并设置编辑器的值。请帮助我,我该怎么做。

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

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>");

最佳答案

看起来您正在尝试将 key 发送到 CKEditor。

请通读这篇文章:Test WYSIWYG editors using Selenium WebDriver

  • 直接发送 key

这种方法是您尝试过但没有奏效的方法。众所周知,Firefox 存在问题。您的代码应该适用于 PhantomJS 或 Chrome。注意 <span>hiiiiiiii<span>将在编辑器中生成实际文本,而不是 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 = '<span>hiiiiiiii<span>'", body);
  • 使用 CKEditor 的原生 API
var executor = driver as IJavaScriptExecutor;
executor.ExecuteScript("CKEDITOR.instances.ckeditor.setData('<span>hiiiiiiii<span>");

关于c# - 如何在 Selenium 中获取和设置文本编辑器值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23421267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com