In order to help us efficiently investigate your issue, please provide the following information:
Execute the following code using the Selenium .NET bindings (exact W3C WebDriver protocol commands are included as comments):
FirefoxOptions options = new FirefoxOptions();
options.LogLevel = FirefoxDriverLogLevel.Trace;
options.BrowserExecutableLocation = @"C:\Program Files (x86)\Nightly\firefox.exe";
// POST /session
// command body:
// {
// "capabilities": {
// "alwaysMatch" : {
// "browserName": "firefox",
// "acceptInsecureCerts": true,
// "moz:firefoxOptions": {
// "binary": "C:\Program Files (x86)\Nightly\firefox.exe",
// "log": {
// "level": "trace"
// }
// }
// }
// }
// }
IWebDriver driver = new FirefoxDriver(options);
// POST /session/{sessionId}/url
// Request Body: { "url": "<url to the hosted HTML file, provided below>" }
driver.Url = "<url to HTML file, provided below>";
// POST /session/{sessionId}/element
// Request Body: { "using": "css selector", "value": "#result" }
IWebElement result = driver.FindElement(By.CssSelector("#result"));
// POST /session/{sessionId}/element
// Request Body: { "using": "css selector", "value": "#result" }
IWebElement element = driver.FindElement(By.CssSelector("#keyReporter"));
// POST /session/{sessionId}/element/{elementId}/value
// Request Body: { "text": "~" }
element.SendKeys("~");
// GET /session/{sessionId}/element/{elementId}/text
string text = result.Text.Trim();
<!DOCTYPE html>
<html>
<head>
<title>Testing Keyboard Events</title>
<script type="text/javascript">
function displayMessage(message) {
document.getElementById('resultParagraph').innerHTML = message;
}
function appendMessage(message) {
document.getElementById('resultParagraph').innerHTML += message + " ";
}
</script>
</head>
<body>
<div id="resultContainer" height="30">
<div id="result" style="width:300;height:60">
<p id="resultParagraph"> </p>
</div>
</div>
<div>
<form>
<input type="text" id="keyReporter" size="80"
onkeyup="appendMessage('up: ' + event.keyCode)"
onkeypress="appendMessage('press: ' + event.keyCode)"
onkeydown="displayMessage(''); appendMessage('down: ' + event.keyCode)" />
</form>
</div>
</body>
</html>
1492039243905 geckodriver INFO Listening on 127.0.0.1:57640
1492039245178 geckodriver::marionette INFO Starting browser \\?\C:\Program Files (x86)\Nightly\firefox.exe with args ["-marionette"]
1492039247447 geckodriver::marionette DEBUG Connected to Marionette on localhost:57666
1492039247471 geckodriver::marionette TRACE ← {"applicationType":"gecko","marionetteProtocol":3}
1492039247496 geckodriver::marionette TRACE → 269:[0,1,"newSession",{"acceptInsecureCerts":true,"browserName":"firefox","capabilities":{"desiredCapabilities":{"acceptInsecureCerts":true,"browserName":"firefox","platform":"ANY","specificationLevel":1,"version":""}},"platform":"ANY","specificationLevel":1,"version":""}]
1492039248263 geckodriver::marionette TRACE ← [1,1,null,{"sessionId":"4f3d9847-2fcc-41d9-b176-25a294e4ab09","capabilities":{"browserName":"firefox","browserVersion":"55.0a1","platformName":"windows_nt","platformVersion":"10.0","pageLoadStrategy":"normal","acceptInsecureCerts":true,"timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"rotatable":false,"specificationLevel":1,"moz:processID":20156,"moz:profile":"C:\\Users\\seatt\\AppData\\Local\\Temp\\rust_mozprofile.BQTZ7ZDiAoIp","moz:accessibilityChecks":false}}]
1492039248279 webdriver::server DEBUG Returning status Ok
1492039248338 webdriver::server DEBUG Returning body {"value": {"sessionId":"4f3d9847-2fcc-41d9-b176-25a294e4ab09","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"55.0a1","moz:accessibilityChecks":false,"moz:processID":20156,"moz:profile":"C:\\Users\\seatt\\AppData\\Local\\Temp\\rust_mozprofile.BQTZ7ZDiAoIp","pageLoadStrategy":"normal","platformName":"windows_nt","platformVersion":"10.0","rotatable":false,"specificationLevel":1,"timeouts":{"implicit":0,"pageLoad":300000,"script":30000}}}}
1492039248383 webdriver::server DEBUG Got request POST AbsolutePath("/session/4f3d9847-2fcc-41d9-b176-25a294e4ab09/url")
1492039248386 webdriver::command DEBUG Got request body {"url":"http://localhost:2310/common/keyboardPage.html"}
1492039248387 geckodriver::marionette TRACE → 68:[0,2,"get",{"url":"http://localhost:2310/common/keyboardPage.html"}]
1492039248489 geckodriver::marionette TRACE ← [1,2,null,{}]
1492039248500 webdriver::server DEBUG Returning status Ok
1492039248500 webdriver::server DEBUG Returning body {"value": {}}
1492039248505 webdriver::server DEBUG Got request POST AbsolutePath("/session/4f3d9847-2fcc-41d9-b176-25a294e4ab09/element")
1492039248506 webdriver::command DEBUG Got request body {"using":"css selector","value":"#result"}
1492039248507 geckodriver::marionette TRACE → 62:[0,3,"findElement",{"using":"css selector","value":"#result"}]
1492039248516 geckodriver::marionette TRACE ← [1,3,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"fb4ba561-adc0-4518-ae20-d1afe6566fa7","ELEMENT":"fb4ba561-adc0-4518-ae20-d1afe6566fa7"}}]
1492039248517 webdriver::server DEBUG Returning status Ok
1492039248517 webdriver::server DEBUG Returning body {"value":{"element-6066-11e4-a52e-4f735466cecf":"fb4ba561-adc0-4518-ae20-d1afe6566fa7"}}
1492039248519 webdriver::server DEBUG Got request POST AbsolutePath("/session/4f3d9847-2fcc-41d9-b176-25a294e4ab09/element")
1492039248520 webdriver::command DEBUG Got request body {"using":"css selector","value":"#keyReporter"}
1492039248520 geckodriver::marionette TRACE → 67:[0,4,"findElement",{"using":"css selector","value":"#keyReporter"}]
1492039248526 geckodriver::marionette TRACE ← [1,4,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"3d17ca03-89c3-456d-be6a-5c42140167da","ELEMENT":"3d17ca03-89c3-456d-be6a-5c42140167da"}}]
1492039248527 webdriver::server DEBUG Returning status Ok
1492039248527 webdriver::server DEBUG Returning body {"value":{"element-6066-11e4-a52e-4f735466cecf":"3d17ca03-89c3-456d-be6a-5c42140167da"}}
1492039248534 webdriver::server DEBUG Got request POST AbsolutePath("/session/4f3d9847-2fcc-41d9-b176-25a294e4ab09/element/3d17ca03-89c3-456d-be6a-5c42140167da/value")
1492039248535 webdriver::command DEBUG Got request body {"text":"~","value":["~"]}
1492039248535 geckodriver::marionette TRACE → 96:[0,5,"sendKeysToElement",{"id":"3d17ca03-89c3-456d-be6a-5c42140167da","text":"~","value":["~"]}]
1492039248628 geckodriver::marionette TRACE ← [1,5,null,{}]
1492039248665 webdriver::server DEBUG Returning status Ok
1492039248665 webdriver::server DEBUG Returning body {"value": {}}
1492039248666 webdriver::server DEBUG Got request GET AbsolutePath("/session/4f3d9847-2fcc-41d9-b176-25a294e4ab09/element/fb4ba561-adc0-4518-ae20-d1afe6566fa7/text")
1492039248667 geckodriver::marionette TRACE → 68:[0,6,"getElementText",{"id":"fb4ba561-adc0-4518-ae20-d1afe6566fa7"}]
1492039248681 geckodriver::marionette TRACE ← [1,6,null,{"value":"down: 192 press: 0 up: 192"}]
1492039248684 webdriver::server DEBUG Returning status Ok
1492039248687 webdriver::server DEBUG Returning body {"value":"down: 192 press: 0 up: 192"}
In order to help us efficiently investigate your issue, please provide the following information:
Firefox Version
55.0a1 (2017-04-12) (32-bit)
geckodriver as of commit 15345b6
Platform
Windows
Steps to reproduce
Execute the following code using the Selenium .NET bindings (exact W3C WebDriver protocol commands are included as comments):
Expect: The result element to include a record of the keyUp event for the shift key.
Result: The shift key is not represented in the key events propagated to the element.