我正在尝试向表情符号发送密钥。我试图通过复制表情符号来发送它,但它引发了此异常:
OpenQA.Selenium.WebDriverException: unknown error: ChromeDriver only supports characters in the BMP
我尝试将其作为unicode发送,但没有成功。这不是预期的迹象。
input.SendKeys("/u1F44D")
发送表情符号的正确方法是什么?
搜索并找到了this,但没有答案,因此我再次询问。
答案 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>