con*_*ind 4 c# winforms cefsharp
我正在使用铬浏览器来自动执行某项任务.
基本上我想加载图片,我必须在网页上点击"添加图片"锚标记.
所以我不能直接点击它不知道为什么当其他工作相同的代码.但我已设法将重点放在该锚标签上,但发送:
KeyEvent k = new KeyEvent();
k.WindowsKeyCode = 9; // TAB KEY
browser.GetBrowser().GetHost().SendKeyEvent(k);
//browser = ChromiumWebBrowser browser;
Run Code Online (Sandbox Code Playgroud)
上面的工作完全正常,因为我看到它正确的锚标签.
现在我做:
KeyEvent k = new KeyEvent();
k.WindowsKeyCode = 13; //ENTER KEY
browser.GetBrowser().GetHost().SendKeyEvent(k);
Run Code Online (Sandbox Code Playgroud)
要模拟输入密钥,但是没有任何反应,但是如果我在关键字上手动按"Enter"它就可以正常工作,那么为什么上述内容与我点击"输入密钥"的行为不一样
有什么建议.
小智 9
我用这样的代码,它对我有用.
KeyEvent k = new KeyEvent();
k.WindowsKeyCode = 0x0D;
k.FocusOnEditableField = true;
k.IsSystemKey = false;
k.Type = KeyEventType.Char;
Browser.GetBrowser().GetHost().SendKeyEvent(k);
Run Code Online (Sandbox Code Playgroud)
花了很多时间,但发现接受的答案对于深入了解这一点很有用:
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);
Run Code Online (Sandbox Code Playgroud)
注意KeyEventType.KeyDown
and thenKeyEventType.KeyUp
被发送。
受到CEF Simulate Mousedown 和 Keysend以及CefSharp 网页元素 click的启发。