Simulating user input
July 7, 2025 ยท View on GitHub
Note
This is currently WIP.
User input currently consist of simulating mouse clicks and keyboard interaction. These interactions triggers default behaviour in many elements.
KeyboardController
To simulate user input, use the KeyboardController type. Example:
b := browser.New()
win := b.Open("http://example.com")
input := win.Document().QueryElement("#fullname-input")
input.(html.HTMLElement).Focus()
ctrl := KeyboardController{Window: win}
ctrl.SendKeys(keys.StringToKeys("John Smith"))
assert.Equal(t, "John Smith", input.Value())
Input is directed goes to the currently focused element. here Element.focus is explicitly called to bring focus to the element.
Important
It is currently clear that the design is not sufficient, as modifier keys have
not been taken into consideration. So the design might change. But the
operation SendKeys(key.StringToKeys("input")) should stay valid as a whole.
Misssing features
Keyboard simulation is in a very early stage.
- Modifier keys
- Moving focus on tab/shift+tab.
- Clicking buttons on space.
- Submitting forms on enter.