首页 > 解决方案 > 带有 Chromedriver 的 Selenium SendKeys() 使用剪贴板内容而不是电子邮件地址中的“@”字符

问题描述

我试图在 C# 中使用 Selenium 和 ChromeDriver 将电子邮件地址写入输入字段。到目前为止没有什么壮观的。但是对于包含“@”字符的字符串,它发送的是剪贴板的内容而不是这个字符。

例如:剪贴板的内容是“####MYCLIPBOARDCONTENT######”复制的Ctrl+C

行的执行

         var input = _webDriver.FindElement(By.Id(id));
         input.Clear();
         input.SendKeys("abc@def.test");

在 UI 中导致这个

在此处输入图像描述

任何人都可以确认这种行为吗?如何处理?我不想通过一些奇怪的黑客来绕过这个。

标签: c#seleniumselenium-chromedriver

解决方案


使用动作链构建“AltGr + Q”。

var actions = new OpenQA.Selenium.Interactions.Actions(driver);
actions.KeyDown(Keys.Control).KeyDown(Keys.Alt); //press Alt
actions.SendKeys("Q"); //press Q
actions.KeyUp(Keys.Control).KeyUp(Keys.Alt); //Release key
actions.Build().Perform();

推荐阅读