Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Issue With CefSharp Browser SendKeys

I am using chromium browser to automate some task.

Basically I want to load images for that I have to click "Add Image" anchor tag on the webpage.

So I cannot directly click it not sure why when other works with same code. But I have managed to bring the focus on that anchor tag but sending :

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

The above work perfectly fine as i see it coming to the correct anchor Tag.

Now i do :

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

To simulate enter key , however nothing happens but if I press "Enter" manually on Keyword it works fine so why the above is not acting same as me clicking "Enter Key"

Any suggestions.

like image 990
confusedMind Avatar asked Jun 24 '17 13:06

confusedMind


2 Answers

I used your code like this, and it works for me.

KeyEvent k = new KeyEvent();
k.WindowsKeyCode = 0x0D;
k.FocusOnEditableField = true;
k.IsSystemKey = false;
k.Type = KeyEventType.Char;
Browser.GetBrowser().GetHost().SendKeyEvent(k);
like image 95
Jesus Ortega Avatar answered Nov 08 '22 10:11

Jesus Ortega


So much time spent, but found the accepted answer useful to get to the bottom of this:

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);

Notice the KeyEventType.KeyDown and then KeyEventType.KeyUp is sent.

Inspired by CEF Simulate Mousedown and Keysend and CefSharp webpage element click.

like image 29
Janis S. Avatar answered Nov 08 '22 11:11

Janis S.