Selenium Grid cho phép thực thi các tập lệnh WebDriver trên các máy từ xa bằng cách định tuyến các lệnh do máy khách gửi đến các phiên bản trình duyệt từ xa
Lưới nhằm mục đích
- Cung cấp một cách dễ dàng để chạy thử nghiệm song song trên nhiều máy
- Cho phép thử nghiệm trên các phiên bản trình duyệt khác nhau
- Bật thử nghiệm đa nền tảng
Quan tâm đến?
Trong khi chuẩn bị các mẫu mã để quay video các lần chạy thử của tôi, tôi gặp phải một sự cố nghiêm trọng. Selenium Grid không thể làm những gì tôi cần nó làm – ít nhất là không phải với cách tiếp cận mà tôi đã có cho đến nay. Hãy tập hợp lại và thay đổi cách chúng ta tạo Lưới Selenium
Bài đăng này là một phần trong hành trình học Python của tôi. Bạn có thể tìm thấy các phần khác của loạt bài này tại đây. Bạn tìm thấy mã cho bài đăng này trong kho lưu trữ PythonFriday của tôi trên GitHub
chướng ngại vật. Bộ chứa video
Selenium Grid cung cấp các bộ chứa video sẽ ghi lại các bài kiểm tra. Tuy nhiên, nếu chúng tôi thêm chúng vào tệp soạn thảo Docker hiện tại của mình, chúng tôi sẽ nhận được video trong toàn bộ thời gian vùng chứa đang chạy. Điều này có thể tốt hơn là không có gì, nhưng nếu vùng chứa của bạn chạy hàng giờ, thì việc tìm đúng vị trí trong video sẽ trở nên tẻ nhạt
Một cách tốt hơn nhiều là sử dụng Lưới động loại bỏ các thùng chứa ngay sau khi thử nghiệm của chúng tôi kết thúc và bằng cách đó, tạo video cho mỗi lần chạy thử nghiệm khi chúng tôi yêu cầu
Tạo lưới động
Lưới động cung cấp cho chúng tôi rất nhiều sự linh hoạt. Chúng tôi chỉ cần xác định loại trình duyệt mà chúng tôi muốn sử dụng; . Chúng tôi có thể xác định các trình duyệt trong một cấu hình. toml như thế này từ kho lưu trữ docker-selenium
YAML1
2
3
4
5
6
7
8
9
10
11
12
13
14
[docker]
# Cấu hình có ánh xạ giữa hình ảnh Docker để sử dụng
# và các khả năng cần được kết hợp với
# bắt đầu một vùng chứa với hình ảnh đã cho
cấu hình = [
"selenium/độc lập-firefox. 4. 5. 3-20221024", "{\"browserName\". \"firefox\"}",
"selenium/độc lập-chrom. 4. 5. 3-20221024", "{\"browserName\". \"trình duyệt Chrome\"}",
"selenium/cạnh độc lập. 4. 5. 3-20221024", "{\"browserName\". \"MicrosoftEdge\"}"
]
# URL để kết nối với docker daemon
url = "http. //chủ nhà. người đóng tàu. nội bộ. 2375"
# Docker image được sử dụng để quay video
hình ảnh video = "selenium/video. ffmpeg-4. 3. 1-20221104"
Từ cùng một kho lưu trữ, chúng ta có thể lấy docker-compose-v3-dynamic-grid. yml và sửa đổi nó một chút để hoạt động trên Windows
con trăn1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
phiên bản. "3"
dịch vụ.
nút-docker.
hình ảnh. selenium/nút-docker . :4. 5. 3-20221024
khối lượng.
- . /nội dung. /chọn/selen/assets
- . /config. toml. /chọn/bin/ . config.toml
# - /var/run/docker. bít tất. /var/run/docker. vớ
phụ thuộc.
- selenium-hub
môi trường.
- SE_EVENT_BUS_HOST=selen-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selen-trung tâm.
hình ảnh. selenium/trung tâm. 4. 5. 3-20221024
container_name. selenium-trung tâm
cổng.
- "4442. 4442"
- "4443. 4443"
- "4444. 4444"
Tôi đã thay đổi đường dẫn tuyệt đối cho thư mục nội dung thành đường dẫn tương đối và nhận xét mục nhập cho docker. sock trong phần khối lượng. Thế là đủ để nó hoạt động trên Windows
Thật không may, phiên bản gốc 4. 6. 0-20221104 chỉ gặp lỗi cho tôi. Do đó, tôi đã hạ cấp trên phiên bản 4 trước đó. 5. 3-20221024 cho tất cả các container
Là điểm chuẩn bị cuối cùng, bạn nên xác minh rằng Docker Desktop hiển thị daemon mà không có TLS trong hộp thoại cài đặt
Chạy Grid động
Chúng ta có thể chạy Lưới động của mình bằng lệnh này
Hệ điều hành MS1
docker-compose -f docker - compose< . -v3-dynamic-grid. yml lên
Nếu mọi thứ hoạt động, chúng ta có thể đến nơi chúng ta sẽ thấy 20 trình duyệt cho mỗi loại được xác định
Đừng hoảng sợ, Grid không khởi động 60 vùng chứa trên máy của bạn. Chỉ khi chúng ta yêu cầu trình duyệt thì Selenium Grid mới tạo vùng chứa – đó là phần động
Kế tiếp
Chúng tôi có thể chạy các thử nghiệm hiện tại của mình mà không có bất kỳ thay đổi nào đối với Lưới động mới được tạo. Mọi thứ sẽ hoạt động như đã làm với Lưới tĩnh. Tuần tới, chúng tôi xem xét các mặt số mà chúng tôi phải bật để quay video cho các lần chạy thử của chúng tôi