18

Google Chrome 38 đã giới thiệu chức năng "Device Mode & Mobile Emulation" mới trong công cụ tìm kiếm. Ngoài việc lựa chọn một thiết bị để thi đua, nó cũng có thể emulate different network conditions:Điều chỉnh mạng bằng chrome và selenium

Tối ưu hóa hiệu suất trang web của bạn trong điều kiện mạng khác nhau là một khía cạnh quan trọng của phát triển cho đối tượng di động.

Điều hòa mạng của chế độ thiết bị cho phép bạn kiểm tra trang web của mình trên một kết nối mạng , bao gồm Edge, 3G và thậm chí là ngoại tuyến. Chọn kết nối từ menu thả xuống được đặt trước để áp dụng mạng thao tác điều chỉnh độ trễ và điều chỉnh độ trễ.

Ví dụ, chúng ta có thể thiết lập nó để được như trong những ngày cũ tốt - GPRS 50 Kbps:

enter image description here

Bây giờ chúng ta có một trường hợp sử dụng tốt cho nó - chúng tôi có một ứng dụng nội bộ cho kiểm tra tốc độ mạng. Và chức năng mô phỏng mới này rất hữu ích cho việc kiểm tra thủ công. Nhưng, chúng tôi muốn tự động hóa nó.

Câu hỏi là:

Có thể bắt đầu chrome qua selen với điều kiện mạng được chỉ định không? Có điều gì đó có thể được kiểm soát thông qua tùy chọn chrome hoặc đối số dòng lệnh không?


Chắc chắn có nhiều tùy chọn để simulate slow internet connection, nhưng câu hỏi đặc biệt về chrome + selenium.

Trả lời

7

API để kiểm soát mô phỏng mạng were added tới ChromeDriver. Và sẽ có sẵn trong một thời gian dài. Theo số comment trong vấn đề được liên kết, bạn nên sử dụng phiên bản ít nhất 2.26 do một số lỗi.

Theo Selenium changelog tại thời điểm viết bindings có sẵn cho 2 ngôn ngữ:

  • JavaScript như các phiên bản 3.4.0 (commit)
  • Python như các phiên bản 3.5.0 (commit)

Nếu bạn cần những ràng buộc này bằng các ngôn ngữ khác, bạn có thể mở vấn đề triển khai vấn đề/đóng góp tương tự như một trong những điều trên.

Ví dụ sử dụng từ Python là dưới đây:

driver.set_network_conditions(
    offline=False, 
    latency=5, # additional latency (ms) 
    download_throughput=500 * 1024, # maximal throughput 
    upload_throughput=500 * 1024) # maximal throughput 
+0

Có phải download_throughput & upload_throughput bằng byte mỗi giây không? Vì vậy, các ví dụ khoảng 5MB/s? – Cynic

+0

@Cynic Trong Công cụ dành cho Chrome Dev, công cụ này cho biết 'kb/s'. Giả định của tôi là nó giống nhau khi sử dụng API. Nhưng tôi chưa tự thử nghiệm. Vui lòng chỉnh sửa câu trả lời nếu/khi bạn tìm ra câu trả lời. –

+0

Thật kỳ lạ. Nếu tôi sử dụng công cụ dev để chuyển đổi nó và đặt vào như 5 * 1024 và thử nghiệm tại http://speedtest.xfinity.com (Dễ dàng tìm thấy nút bắt đầu), tôi nhận được 5 mbps. Nhưng nếu tôi làm như vậy trong một kịch bản Selenium, 5 * 1024 nó về cơ bản không đăng ký. Để có được khoảng 5 Mbps tôi cần phải làm một cái gì đó khoảng 5 * 30000 để có được một cái gì đó mà đứng ra khoảng 5 mbps (trên một 300 mbps + nếu tôi không ga trong kịch bản để không internet). Có lẽ một lỗi mặc dù không tương ứng với bất kỳ chuyển đổi nào mà tôi có thể nghĩ đến. – Cynic

14

Không, không thể kiểm soát Network Connectivity Emulation thông qua tùy chọn Chrome hoặc đối số dòng lệnh. Giả lập kết nối mạng là một phần của trình gỡ lỗi Chrome tích hợp. Một cách để giải quyết vấn đề này là kiểm soát trình gỡ rối. Điều này có thể được thực hiện thông qua một phần mở rộng hoặc bằng cách trực tiếp kiểm soát trình gỡ rối, xem explanation. Tuy nhiên, điều này sẽ không hoạt động với WebDriver. Lý do cho điều này là chỉ có một phiên "gỡ rối" và WebDriver đã sử dụng nó, xem explanation. Vì không có giao diện nào, nên cũng không có cách nào để kiểm soát nó thông qua WebDriver.

Đối với Device Mode & Mobile Emulation cũng là một phần của trình gỡ lỗi tích hợp, có giao diện công cộng (details) và do đó có thể được kiểm soát. Điều này có thể được thực hiện thông qua khả năng WebDriver. Hai tùy chọn 1) Chỉ định tên thiết bị 2) Nhập các thông số của riêng bạn (có giới hạn).

+0

này không còn đúng, thấy giải pháp chấp nhận. – tomasz

5

Mặc dù đây là một chức năng rất hữu ích và rất hữu ích, để kiểm tra nghiêm túc, tôi nghĩ rằng các phương pháp mô phỏng mạng thông thường vẫn là cách để thực hiện.

Tôi biết 2 giải pháp ngoài những liên kết được liên kết ngang - Charles web proxy (công cụ rất hữu ích - thương mại) và triển khai công thức của riêng bạn bằng cách sử dụng Kiểm soát lưu lượng truy cập Linux (ví dụ: xem chương 6 của LAMPe2e).

Bằng cách can thiệp vào kết nối mạng thay vì trình duyệt, bạn sẽ có được một biện pháp thích hợp về tác động độc lập với trình duyệt đang sử dụng.

Tại sao bạn chỉ muốn sử dụng chức năng của Chrome?

Các vấn đề liên quan