Selenium – Action API – Keyboard

1 min read

Tiếp tục series về selenium, chúng ta sẽ cùng tìm hiểu về Keyboard actions.

Chúng ta dùng bàn phím để tương tác với các elements trên website. Có 2 actions được thực hiện bằng bàn phím: Nhấn và thả phím.

There are only 2 actions that can be accomplished with a keyboard: pressing down on a key, and releasing a pressed key. In addition to supporting ASCII characters, each keyboard key has a representation that can be pressed or released in designated sequences.

Keys

Ngoài các keys được biểu thị bằng Unicode thông thường, các giá trị unicode đã được gán cho các keys khác để sử dụng với Selenium. Mỗi ngôn ngữ có cách riêng để tham chiếu các keys này. Bạn có thể xem đầy đủ danh sách chúng ở đây.

Sử dụng biến KEYS với JS

Key down

 await driver.actions()
        .keyDown(Key.SHIFT)
        .sendKeys('a')
        .perform()

Key up

 await driver.actions()
        .keyDown(Key.SHIFT)
        .sendKeys('a')
        .keyUp(Key.SHIFT)
        .sendKeys('b')
        .perform(

Send keys

Đây là một phương thức tiện lợi trong Actions API, nó cho phép kết hợp các lệnh keyDown & keyUp trong cùng một hành động. Việc thực hiện lệnh này hơi khác so với element method, nhưng về cơ bản nó được sử dụn khi cần nhập nhiều characters ở giữa các actions khác.

Active Element

const textField = driver.findElement(By.id('textInput'))
      await textField.click()

Designated Element

const textField = await driver.findElement(By.id('textInput'))

      await driver.actions()
        .sendKeys(textField, 'abc')
        .perform()

Copy and Paste

Đây là một ví dụ về sử dụng tất cả những method phía trên để thực hiện copy/paste action.

Lưu ý: key được sử dụng sẽ khác nhau tùy thuộc vào hệ điều hành có phải Mac OS không. Xem đầy đủ ví dụ trên github.

const cmdCtrl = platform.includes('darwin') ? Key.COMMAND : Key.CONTROL

      await driver.actions()
        .click(textField)
        .sendKeys('Selenium!')
        .sendKeys(Key.ARROW_LEFT)
        .keyDown(Key.SHIFT)
        .sendKeys(Key.ARROW_UP)
        .keyUp(Key.SHIFT)
        .keyDown(cmdCtrl)
        .sendKeys('xvv')
        .keyUp(cmdCtrl)
        .perform()

Tài liệu tham khảo: https://www.selenium.dev/documentation/webdriver/actions_api/keyboard/

Cảm ơn mọi người đã đọc bài.

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *