Bạn đang gặp rắc rối với Serenity-BDD khi chạy kiểm thử tự động hóa ở chế độ headless? Trình duyệt không mở được URL và báo lỗi? Đừng lo lắng, bài viết này sẽ cung cấp cho bạn giải pháp chi tiết để khắc phục vấn đề này, đồng thời giúp bạn hiểu rõ hơn về cách cấu hình Serenity Headless Chrome để kiểm thử hiệu quả hơn.
Khi sử dụng Serenity BDD để chạy kiểm thử tự động hóa trình duyệt ở chế độ headless (tức là chạy trình duyệt ẩn, không có giao diện người dùng), bạn có thể gặp phải tình huống trình duyệt không mở được URL cần thiết, dẫn đến lỗi "No element found" hoặc các lỗi tương tự. Điều này gây cản trở quá trình kiểm thử và làm chậm tiến độ dự án.
Có nhiều nguyên nhân có thể dẫn đến việc Serenity headless không mở được URL, bao gồm:
Dưới đây là các bước bạn có thể thực hiện để khắc phục lỗi Serenity Headless không mở được URL:
Đảm bảo bạn đã cấu hình đúng các tham số cho trình duyệt Chrome hoặc Edge trong file serenity.conf
. Tham số quan trọng nhất là headless
. Hãy thử các giá trị khác nhau để xem giá trị nào phù hợp với môi trường của bạn:
"--headless=new"
: Đây là giá trị được khuyến nghị cho các phiên bản Chrome mới nhất."headless"
: Thử nghiệm với giá trị này nếu "--headless=new" không hoạt động.Ví dụ cấu hình cho Chrome:
webdriver {
driver = chrome
capabilities {
"goog:chromeOptions" {
args = ["--headless=new", "--remote-allow-origins=*", "--test-type", "no-sandbox", "--ignore-certificate-errors", "--window-size=1920,1080", "--incognito", "--disable-infobars", "--disable-gpu", "--disable-default-apps", "--disable-popup-blocking"]
}
}
}
Ví dụ cấu hình cho Edge:
webdriver {
capabilities {
browserName = "MicrosoftEdge"
"ms:edgeOptions" {
args = ["--headless=new", "test-type", "ignore-certificate-errors", "incognito", "disable-infobars", "disable-gpu", "disable-default-apps", "disable-popup-blocking"]
}
}
}
Sử dụng lệnh mvn dependency:tree -Dverbose
để kiểm tra cây dependency của dự án Maven. Tìm kiếm các phiên bản khác nhau của cùng một thư viện (ví dụ: các phiên bản khác nhau của Selenium). Nếu tìm thấy xung đột, hãy loại trừ dependency gây ra xung đột hoặc cập nhật các dependency lên phiên bản tương thích.
Ví dụ về cách loại trừ dependency xung đột trong pom.xml
:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.9</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
Tăng giá trị implicitlywait
và fluentwait
trong cấu hình webdriver.timeouts
để cho phép trình duyệt có thêm thời gian tải trang. Đơn vị tính là milliseconds.
webdriver {
timeouts {
implicitlywait = 5000
fluentwait = 5000
}
}
Trong `serenity.conf`, đảm bảo thuộc tính webdriver.autodownload
được đặt thành `true`. Điều này cho phép Serenity tự động tải xuống và cài đặt trình điều khiển trình duyệt (chromedriver, msedgedriver) tương ứng với phiên bản trình duyệt bạn đang sử dụng.
webdriver {
driver = chrome
autodownload = true
...
}
Trong phần "goog:chromeOptions"
hoặc "ms:edgeOptions"
, thêm các tùy chọn sau:
"--remote-allow-origins=*"
: Cho phép kết nối từ xa đến trình duyệt."--disable-dev-shm-usage"
: Vô hiệu hóa việc sử dụng /dev/shm trong Docker (quan trọng khi chạy trong container)."--no-sandbox"
: Vô hiệu hóa sandbox (chỉ sử dụng khi thực sự cần thiết và hiểu rõ rủi ro bảo mật)."--ignore-certificate-errors"
: Bỏ qua lỗi chứng chỉ (chỉ sử dụng trong môi trường kiểm thử).Nếu bạn không sử dụng webdriver.autodownload
và tự cấu hình đường dẫn đến trình điều khiển trình duyệt (chromedriver, msedgedriver), hãy đảm bảo đường dẫn này chính xác và trình điều khiển tương thích với phiên bản trình duyệt.
Khi chạy kiểm thử trong máy ảo (VM) hoặc container (Docker), hãy đảm bảo:
Kiểm tra kỹ lưỡng file `serenity.conf` của bạn. Lỗi cú pháp nhỏ (ví dụ: thiếu dấu phẩy, ngoặc không khớp) có thể gây ra các vấn đề không mong muốn.
Việc cấu hình Serenity Headless để chạy kiểm thử tự động hóa có thể gặp một số khó khăn ban đầu, nhưng với hướng dẫn chi tiết này, bạn có thể tự tin giải quyết các vấn đề thường gặp và tận dụng tối đa sức mạnh của Serenity BDD. Hãy nhớ kiểm tra kỹ cấu hình, giải quyết xung đột dependency và điều chỉnh timeouts để đảm bảo quá trình kiểm thử diễn ra suôn sẻ.
Bài viết liên quan