Đợi đối tượng UI hoặc sự kiện với Selenium WebDriver

Cập nhật ngày: 17/08/2022 - Đã có 531 lượt xem bài viết này!
Đợi đối tượng UI hoặc sự kiện với Selenium WebDriver
Trong kiểm thử tự động, đôi khi tốc độ của công cụ kiểm thử tự động nhanh hơn tốc độ của ứng dụng cần kiểm thử (AUT/SUT) dẫn đến việc thực thi kiểm thử của chúng ta thất bại (Failed). Hầu hết các công cụ kiểm thử tự động đều hỗ trợ cho chúng ta cách để có thể chờ đợi một đối tượng UI hoặc một sự kiện của đối tượng UI xảy ra. Selenium WebDriver cung cấp cho chúng ta hai phương thức để làm việc này: Explicit (công khai) và Implicit (ngầm).

Đợi đối tượng UI hoặc sự kiện với Selenium WebDriver

Danh mục:

1. Chờ đợi Implicit

2. Chờ đợi Explicit

3. Đối tượng ExpectedConditions

4. Các điều kiện chờ thường sử dụng

Trong bài này, mình sẽ sử dụng mã Selenium WebDriver cho C#

Trong kiểm thử tự động, đôi khi tốc độ của công cụ kiểm thử tự động nhanh hơn tốc độ của ứng dụng cần kiểm thử (AUT/SUT) dẫn đến việc thực thi kiểm thử của chúng ta thất bại (Failed). Hầu hết các công cụ kiểm thử tự động đều hỗ trợ cho chúng ta cách để có thể chờ đợi một đối tượng UI hoặc một sự kiện của đối tượng UI xảy ra. Selenium WebDriver cung cấp cho chúng ta hai phương thức để làm việc này: Explicit (công khai) và Implicit (ngầm).

1. Chờ đợi Implicit

Chờ ngầm là việc sử dụng một thời gian nhất định để Selenium WebDriver cố gắng tìm một đối tượng UI trong trường hợp đối tượng UI không xuất hiện ngay lập tức. Giá trị mặc định là 0 giây, và giá trị này được gắn kèm với đối tượng IWebDriver. Một khi được thiết lập, giá trị này sẽ bắt đầu ảnh hưởng đến toàn bộ vòng đời của đối tượng IWebDriver, cho đến khi được thiết lập giá trị mới hoặc kết thúc đối tượng IWebDriver. Sau khi thiết lập giá trị này, trong các đoạn mã kiểm thử, chúng ta không cần phải thêm bất kỳ câu lệnh nào nữa. Việc chờ đợi được đối tượng IWebDriver quản lý. Đây cũng là lý do mà chúng ta gọi là chờ “ngầm” :).

Cách thiết lập cho việc chờ này như sau:

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));

Đối số của hàm ImplicitlyWait là một đối tượng TimeSpan của C#, và chúng ta hoàn toàn toàn quyền thiết lập giá trị tối đa cho việc chờ đợi trước khi trả về lỗi Không-Tìm-Thấy-Đối-Tượng.

2. Chờ đợi Explicit

Chờ đợi công khai là một phương thức chèn mã ngay trong kịch bản kiểm thử tự động của chúng ta, đặc biệt để đợi một sự kiện của đối tượng UI. Đối với việc chờ ngầm, chúng ta chỉ đợi một sự kiện là đối tượng UI xuất hiện trên trang, hay đúng hơn là trong mã nguồn HTML của trang web. Sử dụng phương thức công khai, chúng ta có thể chờ đợi những sự kiện đặc biệt khác của đối tượng UI, như hiển thị, sẵn sàng để sử dụng, thay đổi kích thước, vị trí, v.v… Chúng ta đặc biệt sử dụng cách này khi tương tác với các đối tượng UI Ajax, vì những đối tượng này thường thay đổi trạng thái khi máy chủ/máy khách hoạt động.

Với cách này, chúng ta cần một đối tượng trong Selenium WebDriver để quản lý thời gian chờ đợi, WebDriverWait. Cách viết mã cho việc này như sau:

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));

wait.Until(ExpectedConditions.ElementToBeClickable([IWebElement]));

3. Đối tượng ExpectedConditions

Để việc sử dụng phương thức chờ đợi công khai này dễ dàng hơn, Selenium WebDriver hỗ trợ chúng ta đối tượng ExpectedConditions, dùng cho việc khai báo các điều kiện chờ đợi trong từng trường hợp cụ thể.

4. Các điều kiện chờ thường sử dụng:

-  ElementExists: đợi một đối tượng UI tồn tại trong mã HTML của trang web
-  ElementIsVisible: đợi một đối tượng UI hiển thị trên trang
-  ElementToBeClickable: đợi một đối tượng UI sẵn sàng được tương tác
-  TextToBePresentInElement: đợi một đối tượng UI với một đoạn chữ mong muốn
-  FrameToBeAvailableAndSwitchToIt: đợi một đối tượng Frame sẵn sàng tương tác


 

BTV.Trần Thị Thu Huyền
Phòng Truyền Thông IMicroSoft Việt Nam
Hotline: 0916 878 224
Email: huyenttt@imicrosoft.edu.vn

 

Bạn đang muốn tìm kiếm 1 công việc với mức thu nhập cao.
✅ Hoặc là bạn đang muốn chuyển đổi công việc mà chưa biết theo học ngành nghề gì cho tốt.
✅ Giới thiệu với bạn Chương trình đào tạo nhân sự dài hạn trong 12 tháng với những điều đặc biệt mà chỉ có tại IMIC và đây cũng chính là sự lựa chọn phù hợp nhất dành cho bạn:
👉 Thứ nhất: Học viên được đào tạo bài bản kỹ năng, kiến thức chuyên môn lý thuyết, thực hành, thực chiến nhiều dự án và chia sẻ những kinh nghiệm thực tế từ Chuyên gia có nhiều năm kinh nghiệm dự án cũng như tâm huyết truyền nghề.
👉 Thứ hai: Được ký hợp đồng cam kết chất lượng đào tạo cũng như mức lương sau tốt nghiệp và đi làm tại các đối tác tuyển dụng của IMIC. Trả lại học phí nếu không đúng những gì đã ký kết.
👉 Thứ ba: Cam kết hỗ trợ giới thiệu công việc sang đối tác tuyển dụng trong vòng 10 năm liên tục.
👉 Thứ tư: Được hỗ trợ tài chính với mức lãi suất 0 đồng qua ngân hàng VIB Bank.
👉  Có 4 Chương trình đào tạo nhân sự dài hạn dành cho bạn lựa chọn theo học. Gồm có:
1)  Data Scientist full-stack
2)  Embedded System & IoT development full-stack
3)  Game development full-stack
4)  Web development full-stack 
✅ Cảm ơn bạn đã dành thời gian lắng nghe những chia sẻ của mình. Và tuyệt vời hơn nữa nếu IMIC được góp phần vào sự thành công của bạn. 
✅ Hãy liên hệ ngay với Phòng tư vấn tuyển sinh để được hỗ trợ về thủ tục nhập học.
✅ Chúc bạn luôn có nhiều sức khỏe và thành công!

 

Xem khóa đào tạo nhân sự theo danh mục!

Xem các khóa đào tạo nhân sự