Trăn lưới Selenium

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

YAML

1

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ăn

1

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

Trăn lưới Selenium
Trăn lưới Selenium

 

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 MS

1

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

Trăn lưới Selenium
Trăn lưới Selenium

Đừ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

Chúng ta có thể sử dụng lưới selen với Python không?

Để sử dụng Python với selen, trước tiên hãy cài đặt phiên bản máy khách selen mới nhất tương đương với phiên bản lưới selen đã chọn của bạn . Thí dụ. Nếu bạn đã chọn sử dụng Selenium phiên bản 3. 14. 0 cho lưới Selenium của bạn, cài đặt 3 mới nhất. 14. x cho Python.

Lưới selen trong Python là gì?

Lưới Selenium 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.

Làm cách nào để cài đặt lưới selen trong Python?

Để cài đặt Selenium Grid, bạn chỉ cần tải xuống tệp jar Máy chủ Selenium – cùng một tệp được sử dụng để chạy thử nghiệm Selenium RC. Để chạy các kịch bản thử nghiệm trên Grid, bạn nên sử dụng các đối tượng DesiredCapabilities và RemoteWebDriver.

Selenium Grid được sử dụng để làm gì?

Selenium Grid có thể được sử dụng để thực hiện Kiểm tra trình duyệt chéo trên quy mô lớn , bằng cách chạy thử nghiệm đồng thời trên các kết hợp trình duyệt-thiết bị khác nhau. Sử dụng thử nghiệm song song, bạn có thể đảm bảo trải nghiệm người dùng nhất quán trên các phiên bản trình duyệt và thiết bị khác nhau trong một khoảng thời gian ngắn.