{"record":{"id":"cbcb70b4dff9ba03","repo":"SeleniumHQ/selenium","slug":"no-such-key-key-inspect","errorCode":null,"errorMessage":"no such key #{key.inspect}","messagePattern":"no such key #(.+?)","errorType":"exception","errorClass":"Error::UnsupportedOperationError","httpStatus":null,"severity":"error","filePath":"rb/lib/selenium/webdriver/common/keys.rb","lineNumber":126,"sourceCode":"        numpad_page_down: \"\\ue055\",\n        numpad_end: \"\\ue056\",\n        numpad_home: \"\\ue057\",\n        numpad_left: \"\\ue058\",\n        numpad_up: \"\\ue059\",\n        numpad_right: \"\\ue05A\",\n        numpad_down: \"\\ue05B\",\n        numpad_insert: \"\\ue05C\",\n        numpad_delete: \"\\ue05D\"\n      }.freeze\n\n      #\n      # @api private\n      #\n\n      def self.[](key)\n        return KEYS[key] if KEYS[key]\n\n        raise Error::UnsupportedOperationError, \"no such key #{key.inspect}\"\n      end\n\n      #\n      # @api private\n      #\n\n      def self.encode(keys)\n        keys.map { |key| encode_key(key) }\n      end\n\n      #\n      # @api private\n      #\n\n      def self.encode_key(key)\n        case key\n        when Symbol\n          Keys[key]","sourceCodeStart":108,"sourceCodeEnd":144,"githubUrl":"https://github.com/SeleniumHQ/selenium/blob/aa36b38e696a0909e973bdf5e2f9031ffe842c4b/rb/lib/selenium/webdriver/common/keys.rb#L108-L144","documentation":"Keys[key] is an internal (@api private) lookup that maps a Symbol key name to its Unicode Private-Use-Area code point from the frozen KEYS table. It raises Error::UnsupportedOperationError when the Symbol has no entry. Users normally hit this indirectly through Element#send_keys, which encodes Symbol arguments via this lookup.","triggerScenarios":"Calling element.send_keys(:retun) with a misspelled Symbol. Passing a Symbol that is not a defined key name such as :enter_key or :cmd. Using :ctrl instead of the defined :control, or :cmd instead of :command.","commonSituations":"Typos in key Symbols. Guessing a key name that does not exist in the KEYS constant (e.g. :cmd, :altgr, :win). Assuming a key alias exists when only :command/:left_meta are defined for the meta key.","solutions":["Use a recognized Symbol from Selenium::WebDriver::Keys::KEYS such as :return, :enter, :tab, :control, :command, :escape, :arrow_down.","For literal characters, pass plain Strings to send_keys instead of Symbols.","Inspect Selenium::WebDriver::Keys::KEYS.keys to confirm the exact Symbol name before using it."],"exampleFix":"# before\nel.send_keys(:retun)\n\n# after\nel.send_keys(:return)","handlingStrategy":"validation","validationCode":"unless Selenium::WebDriver::Keys::KEYS.key?(sym)\n  raise ArgumentError, \"#{sym.inspect} is not a valid Selenium key Symbol\"\nend","typeGuard":"def valid_key?(sym)\n  sym.is_a?(Symbol) && Selenium::WebDriver::Keys::KEYS.key?(sym)\nend","tryCatchPattern":"begin\n  el.send_keys(sym)\nrescue Selenium::WebDriver::Error::UnsupportedOperationError => e\n  raise unless e.message.include?('no such key')\n  el.send_keys(sym.to_s) # fall back to literal string\nend","preventionTips":["Reference Selenium::WebDriver::Keys::KEYS.keys to confirm Symbol names before use.","Prefer plain Strings for literal characters to avoid the Symbol lookup entirely.","Watch for common mismatches: :control (not :ctrl), :command (not :cmd), :return/:enter."],"tags":["ruby","keyboard","send-keys","keys"],"backgroundTag":null,"analyzedSha":"aa36b38e696a0909e973bdf5e2f9031ffe842c4b","analyzedAt":"2026-08-14T02:32:32.244Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}