Selenium – Interacting with web elements

2 min read

Có 5 lệnh cơ bản có thể được thực hiện trên một phần tử:

  • Click (apply cho any element)
  • Send keys (chỉ aplly cho text fields và element có thể edit)
  • Clear (chỉ apply cho text fields và element có thể edit)
  • submit (chỉ apply cho form elements)
  • select (xem list elements ở đây ạ)

btw, nếu bạn chưa xem bài viết về File upload và locators thì có thể xem ở đây nhé ^^

Ví dụ trong bài viết này sẽ sử dụng JS nhé mọi người, công ty mình dạo này toàn dùng JS viết auto à!

Additional validations

Những phương pháp này được thiết kế để mô phỏng lại trải nghiệm người dùng trên web một cách giống nhất có thể, không giống như Actions API, trước khi thực hiện một action cụ thể nó sẽ cần xác định và thực hiện 2 điều sau:

  1. Nếu element nằm ngoài viewport (khu vực mà người dùng có thể nhìn thấy nội dung của trang web), thì sẽ kéo element vào view nhìn, bằng cách căn chỉnh sao cho bottom của element trùng với bottom của view port.
  2. Đảm bảo element có thể tương tác trước khi thực hiện action. Nếu nó xác định một phần tử không có trong khung nhìn, không được hiển thị, không thể tương tác với bàn phím hoặc không thể tương tác với con trỏ, thì nó sẽ trả về lỗi phần tử không thể tương tác.

Click

Element được click vào vị trí trung tâm khi Click command được thực hiện. Nếu như trung tâm của element bị che đi bởi 1 lý do nào đó, selenium sẽ trả về lỗi element bị chặn nhấp chuột.

// Navigate to Url
await driver.get('https://www.selenium.dev/selenium/web/inputs.html');

// Click the element
await driver.findElement(By.name('color_input')).click();

Send keys

Lệnh send keys của element sẽ nhập các keys được cung cấp vào một element có thể edit được. Tức là một element là một element input của form với text type hoặc là một content-editable attribute. Nếu nó không edit được thì sẽ có lỗi invalid element state được trả về.

JS:

// Navigate to Url
await driver.get('https://www.selenium.dev/selenium/web/inputs.html');

//Clear field to empty it from any previous data
await driver.findElement(By.name('email_input')).clear();

// Enter text 
await driver.findElement(By.name('email_input')).sendKeys('admin@localhost.dev');

Clear

Lệnh clear element để reset lại nội dung của element. Do đó element được clear cũng phải là element có thể edit và reset được. Điều này có nghĩa nó là input element của 1 form với type là text hoặc một element có attribute content-editable. Nếu các điều kiện trên không được đáp ứng thì lỗi invalid element state sẽ được trả về.

// Navigate to Url
await driver.get('https://www.selenium.dev/selenium/web/inputs.html');

//Clear field to empty it from any previous data
await driver.findElement(By.name('email_input')).clear();

Submit

Trong Selenium 4, Submit đã không còn được thực thi với một endpoint và các functions riêng qua việc chạy script. Vì vậy, bạn không nên sử dụng phương pháp này mà thay vào đó click vào nút submit form.

Avatar photo

Leave a Reply

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