C#Selenium使用SendKeys发送表情符号

时间:2018-12-14 21:59:22

标签: c# google-chrome selenium-webdriver

我正在尝试向表情符号发送密钥。我试图通过复制表情符号来发送它,但它引发了此异常:

OpenQA.Selenium.WebDriverException: unknown error: ChromeDriver only supports characters in the BMP

我尝试将其作为unicode发送,但没有成功。这不是预期的迹象。

input.SendKeys("/u1F44D")

发送表情符号的正确方法是什么?

搜索并找到了this,但没有答案,因此我再次询问。

3 个答案:

答案 0 :(得分:2)

问题是您正在使用ChromeDriver。如异常消息所述,ChromeDriver目前仅支持Unicode Basic Multilingual Plane中的代码点。如果要使用其他驱动程序(例如FirefoxDriver或InternetExplorerDriver),则发送表情符号会获得更好的结果。 Web Platform Test套件中有专门发送表情符号的特定测试,这些测试适用于其他浏览器。

顺便说一句,用C#发送字符的正确方法是

[100, 10]

答案 1 :(得分:1)

你好 Vibhav Ramcharan

我做了第一次测试,在Google搜索框上运行了! 我进行了第二次测试,以在Facebook组的模式窗口中编写内容,但是没有任何反应!

在您的示例中,我仅替换为:

var searchInput = driver.FindElement(By.XPath("//input[@aria-label='Search']"));

具有:

var searchInput = driver.FindElement(By.XPath("//div[@class='rq0escxv datstx6m k4urcfbm a8c37x1j']/div/div/div/div/div/div/span"));

最后就是我们写这篇文章的地方

如果我使用不带表情符号的纯文本,则下面的方法有效。

driver.FindElement(By.XPath("//div[@class='rq0escxv datstx6m k4urcfbm a8c37x1j']/div/div/div/div/div/div/span")).SendKeys("...My text of the post...");

也许我需要更改它?

var script = "arguments[0].value='" + text + "';";

答案 2 :(得分:0)

您可以使用IJavaScriptExecutor在C#中使用Selenium实现此目标

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

namespace ResearchDevelopment
{
    internal class Program
    {  
        static void Main(string[] args)
        {
            var driver = new ChromeDriver() { Url = "http://www.google.co.za" };

            var searchInput = driver.FindElement(By.XPath("//input[@aria-label='Search']"));

            PopulateElementJs(driver, searchInput, "?");

            searchInput.SendKeys(Keys.Enter); // Optional

            driver?.Quit();
        }

        public static void PopulateElementJs(IWebDriver driver, IWebElement element, string text)
        {
            var script = "arguments[0].value=' " + text + " ';";
            ((IJavaScriptExecutor)driver).ExecuteScript(script, element);
        }
    }
}

packages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Selenium.Chrome.WebDriver" version="76.0.0" targetFramework="net472" />
  <package id="Selenium.Support" version="3.0.0" targetFramework="net472" />
  <package id="Selenium.WebDriver" version="3.0.0" targetFramework="net472" />
</packages>