首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CefSharp浏览器SendKeys的问题

问CefSharp浏览器SendKeys的问题
EN

Stack Overflow用户
提问于 2017-06-24 21:27:52
回答 2查看 8.7K关注 0票数 6

我正在使用铬浏览器自动完成一些任务。

基本上我想加载的图像,我必须点击“添加图像”锚标签在网页上。

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

代码语言:javascript
复制
 KeyEvent k = new KeyEvent();
 k.WindowsKeyCode = 9;  // TAB KEY
 browser.GetBrowser().GetHost().SendKeyEvent(k); 
 //browser = ChromiumWebBrowser browser;

上面的代码运行得很好,因为我看到它出现在正确的锚标签上。

现在我知道了:

代码语言:javascript
复制
 KeyEvent k = new KeyEvent();
 k.WindowsKeyCode = 13;   //ENTER KEY
 browser.GetBrowser().GetHost().SendKeyEvent(k);

模拟回车键,但是什么也没有发生,但是如果我在关键字上手动按“回车”,它工作得很好,所以为什么上面的操作不同于我点击“回车键”

有什么建议吗。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-13 21:23:11

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

代码语言:javascript
复制
KeyEvent k = new KeyEvent();
k.WindowsKeyCode = 0x0D;
k.FocusOnEditableField = true;
k.IsSystemKey = false;
k.Type = KeyEventType.Char;
Browser.GetBrowser().GetHost().SendKeyEvent(k);
票数 13
EN

Stack Overflow用户

发布于 2018-11-24 03:32:15

花了这么多时间,但发现公认的答案很有用,可以弄清这个问题的真相:

代码语言:javascript
复制
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和CefSharp webpage element click。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44736904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档