CefSharp 浏览器 SendKeys 问题

Issue With CefSharp Browser SendKeys

我正在使用 chromium 浏览器来自动执行一些任务。

基本上我想加载图像,我必须单击网页上的 "Add Image" 锚标记。

所以我不能直接点击它不知道为什么其他人使用相同的代码。但是我已经设法将焦点放在那个锚标记上但是发送了:

 KeyEvent k = new KeyEvent();
 k.WindowsKeyCode = 9;  // TAB KEY
 browser.GetBrowser().GetHost().SendKeyEvent(k); 
 //browser = ChromiumWebBrowser browser;

上面的工作非常好,因为我看到它到达了正确的锚标签。

现在我做 :

 KeyEvent k = new KeyEvent();
 k.WindowsKeyCode = 13;   //ENTER KEY
 browser.GetBrowser().GetHost().SendKeyEvent(k);

模拟回车键,但没有任何反应,但如果我在关键字上手动按 "Enter" 它工作正常所以为什么上面的行为与我点击 "Enter Key"

的行为不同

任何建议。

我这样使用你的代码,它对我有用。

KeyEvent k = new KeyEvent();
k.WindowsKeyCode = 0x0D;
k.FocusOnEditableField = true;
k.IsSystemKey = false;
k.Type = KeyEventType.Char;
Browser.GetBrowser().GetHost().SendKeyEvent(k);

花了这么多时间,但发现接受的答案对深入了解这个问题很有用:

KeyEvent k = new KeyEvent
{
    WindowsKeyCode = 0x0D, // Enter
    FocusOnEditableField = true,
    IsSystemKey = false,
    Type = KeyEventType.KeyDown
};

_browser.GetBrowser().GetHost().SendKeyEvent(k);

Thread.Sleep(100);

k = new KeyEvent
{
    WindowsKeyCode = 0x0D, // Enter
    FocusOnEditableField = true,
    IsSystemKey = false,
    Type = KeyEventType.KeyUp
};

_browser.GetBrowser().GetHost().SendKeyEvent(k);

Thread.Sleep(100);

注意 KeyEventType.KeyDown,然后发送 KeyEventType.KeyUp

灵感来自 CEF Simulate Mousedown and Keysend and