Skip to content

[🐛 Bug]: Improvement to Element Send Keys documentation #2446

@kentr

Description

@kentr

What happened?

I suggest that the documentation for Send Keys should say that the target element must be keyboard-interactable instead of editable.

The W3C WebDriver current draft implies that keyboard-interactable is the only restriction:

The Element Send Keys command scrolls into view the form control element and then sends the provided keys to the element. In case the element is not keyboard-interactable, an element not interactable error is returned.

To test this on non-editable elements, I used the JavaScript WebDriver element.sendKeys() on a vanilla button element. It appears to work.

This the test that I used:

describe('Element Interactions', function () {
  let driver;

  before(async function () {
    driver = new Builder()
      .forBrowser(Browser.CHROME)
      .usingServer('http://selenium-chrome:4444')
      .build();
  });

  after(async () => await driver.quit());

  [{
    keyName: 'Space',
    key: Key.SPACE,
  },
  {
    keyName: 'Enter',
    key: Key.ENTER,
  }]
    .forEach(({ keyName, key }) => {
      it(`can use sendKeys on button element with ${keyName}`, async function () {

        await driver.get('https://www.selenium.dev/selenium/web/javascriptPage.html');

        const button = await driver.findElement(By.id('switchFocus'));

        assert.strictEqual(
          await driver.switchTo().activeElement().getAttribute('id'),
          ''
        );

        await button.sendKeys(key);

        assert.strictEqual(
          await driver.switchTo().activeElement().getAttribute('id'),
          'theworks'
        );

      });
    });
});

What browsers and operating systems are you seeing the problem on?

  • MacOS 14.7.7 (Sonoma).
  • Brave Browser 1.81.136 (Chromium 139.0.7258.143).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions