Khi làm việc với Selenium, chúng ta sẽ có được một object type với cái tên WebElement để làm việc và tương tác trực tiếp với Element mà ta đã “find” trên web. Cùng với đó, WebElement cũng cung cấp cho chúng ta rất nhiều các method để tương tác với nó, như là: click, sendKeys,..

Và trong số các method mà WebElement cung cấp, có một method với cái tên là “clear()” là khá đặc biệt so với các method còn lại. Vậy method này thực sự sẽ hoạt động như thế nào. Hãy cùng dthshare tìm hiểu method WebElement.clear() này nhé.

Định nghĩa về WebElement.clear()

Theo định nghĩa cơ bản nhất đến từ Selenium, thì WebElement.clear(), sẽ xóa đi dữ liệu đang hiển thị trên Element đó với điều kiện Element đó phải là một Editable Element (có thể edit hoặc type text).

Cách thức WebElement.clear() hoạt động

Không giống với những method khác có cùng sứ mệnh với nó là giải lập thao tác của người dùng trên browser. Như click(). chính là giả lập lại thao tác click() một khu vực nào đó trên browser, nếu bị che bởi một gì đó trên màn hình, click sẽ báo lỗi là không unclickable element.

Hoặc, như sendKeys() chính là giả lập lại hành động truyền tải dữ liệu từ keyboard vào element nào đó trên browser từng từ 1 và cũng như click, sẽ báo lỗi, nếu element đó invisible.

Nhưng với WebElement.clear() đã dường như dùng vài thủ thuật nhỏ để xóa đi dữ liệu trong element đó mà không phải theo cách một “user” sẽ làm (trỏ chuột vào field, bấm delete).

Theo w3.org, thật chất, method này đang đi clear một attribute của Element đó mà không phải thao tác thật tế như một người dùng thật sự và Attribute đó là innerHTML.

Bởi vì điều đó khiến nhiều trường hợp mà dù cho có gọi method clear() nhưng element vẫn giữ value đó. Có thể là vì field đó đã được setup những event handler cao cấp mà với việc clear innerHTML vẫn không thể xóa đi dữ liệu của nó.

Vì vậy, nếu là đối với dthshare thì cách xóa triệt để dữ liệu một field nào đó, sẽ hạn chế dùng clear method mà sẽ dùng tổ hợp phím Ctrl + A + Delete (for Windows) and Command + A + Delete (for MacOS) để xóa dữ liệu.

Điều này sẽ giúp ta thật tế thiết lập được hành động của người dùng hơn là dùng clear method. Mong rằng kiến thức này của dthshare có thể giúp ích được đến với các bạn.

Reference: https://www.w3.org/TR/webdriver1/#element-clear