Issue With CefSharp Browser SendKeys
我正在使用Chrome浏览器自动执行某些任务。
基本上,我想为此加载图像,我必须单击网页上的"添加图像"锚标记。
因此我无法直接单击它,不确定为什么其他代码可以使用相同的代码。但是我设法将重点放在该锚标记上,但是发送:
1 2 3 4 | KeyEvent k = new KeyEvent(); k.WindowsKeyCode = 9; // TAB KEY browser.GetBrowser().GetHost().SendKeyEvent(k); //browser = ChromiumWebBrowser browser; |
当我看到它到达正确的锚标记时,上面的工作就很好了。
现在我要做:
1 2 3 | KeyEvent k = new KeyEvent(); k.WindowsKeyCode = 13; //ENTER KEY browser.GetBrowser().GetHost().SendKeyEvent(k); |
要模拟Enter键,但是什么也没有发生,但是如果我在Keyword上手动按" Enter"键,它将正常工作,因此,为什么上述内容与我单击" Enter Key"时的行为不一样
任何建议。
我这样使用了您的代码,并且对我有用。
1 2 3 4 5 6 | KeyEvent k = new KeyEvent(); k.WindowsKeyCode = 0x0D; k.FocusOnEditableField = true; k.IsSystemKey = false; k.Type = KeyEventType.Char; Browser.GetBrowser().GetHost().SendKeyEvent(k); |
花了这么多时间,但发现公认的答案有助于深入了解这一问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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); |
请注意先发送
受CEF启发,模拟Mousedown和Keysend,并单击CefSharp网页元素。