繁体   English   中英

Selenium ChromeDriver C# - 如何向浏览器发送快捷键

[英]Selenium ChromeDriver C# - How to Send Shortcut Keys To Browser

我知道我不能将组合键与 chromedriver 一起使用,但可以使用 JavaScript 作为替代方案。 下面的示例导航到 google.com 并打开一个新的 window 选项卡。

IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://google.com");
IJavaScriptExecutor js = driver as IJavaScriptExecutor;
js.ExecuteScript("window.open()"); // Open new browser tab like CTRL + t do

但无法弄清楚如何发送这些键盘组合......

CTRL + SHIFT + i
CTRL + SHIFT + m

由于您可以使用.ExceuteScript运行任意 JavaScript 您可以使用 JavaScript 解决方案将按键发送到 Web 页面: 是否可以通过编程方式模拟按键事件?

这仅适用于 Web 页面本身处理的快捷方式。 由于您提供的快照示例实际上是浏览器快捷方式,因此 JavaScript 解决方案将不起作用。

相反,您必须将键盘按下直接发送到 Web 浏览器。 这取决于操作系统,但在 Windows 下,您可以使用SendMessage将键盘按下发送到另一个进程: Sending keyboard key to browser in C# using sendkey function

编辑:上面的方法很难发送涉及 Shift/Control 的快捷方式。 当在 Windows SendKeys有关语法的更多信息)下时,可用于将密钥发送到当前前台 window:

// reference System.Windows.Forms
SendKeys.SendWait ("^+{i}"); // CTRL + SHIFT + I
Thread.Sleep (500);
SendKeys.SendWait ("^+{m}"); // CTRL + SHIFT + M

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM