18

Google Chrome 38 представил новую функциональность "Device Mode & Mobile Emulation" в devtools. В дополнении к выбору устройства для эмуляции, также можно emulate different network conditions:Сетевое дросселирование с хромом и селеном

Оптимизация производительности вашего сайта в различных условиях сети является ключевым аспектом разработки для мобильной аудитории.

Сетевое кондиционирование устройства позволяет тестировать ваш сайт на сетевом подключении, включая Edge, 3G и даже офлайн. Выберите соединение из раскрывающегося списка предустановок, чтобы применить сетевое управление .

Например, мы можем установить, что это будет как в старые добрые времена - GPRS 50 Кбит:

enter image description here

Теперь у нас есть хороший случай использования для него - есть внутреннее приложение для тестирование скорости сети. И эта новая функциональность эмуляции очень полезна для ручного тестирования. Но мы бы хотели автоматизировать его.

Вопрос:

Можно ли начать хром с помощью селена с заданными условиями сетей? Это что-то, что можно контролировать с помощью хром-предпочтений или аргументов командной строки?


Есть, конечно, несколько вариантов для simulate slow internet connection, но вопрос конкретно о хром + селен.

ответ

7

API для управления сетевой эмуляцией were added для ChromeDriver. И должно быть доступно довольно долгое время. Согласно comment в связанной проблеме вы должны использовать версию не менее 2.26 из-за некоторого исправления.

Согласно Селен changelog на момент написания переплетов доступны для 2-х языках:

  • JavaScript в версии 3.4.0 (commit)
  • Python, начиная с версии 3.5.0 (commit)

Если вам нужна эта привязка на других языках, вероятно, вам следует открыть выпуск/внести вклад в реализацию, аналогичную одному из вышеперечисленных.

Пример использования с Python ниже:

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

Загружается_throughput & upload_throughput в байтах в секунду? Итак, примеры примерно 5 МБ/с? – Cynic

+0

@Cynic В Chrome Dev Tools он говорит 'kb/s'. Мое предположение заключается в том, что при использовании API это одно и то же. Но я не проверял себя. Пожалуйста, отредактируйте ответ, если/когда вы это выясните. –

+0

Странно. Если я использую инструменты dev для переключения и вставляю как 5 * 1024 и тестирую по адресу http://speedtest.xfinity.com (легко найти кнопку запуска), я получаю 5 Мбит/с. Но если я делаю то же самое в сценарии Selenium, 5 * 1024 он в основном не регистрируется. Чтобы обойтись 5 Мбит/с, мне нужно сделать что-то около 5 * 30000, чтобы получить что-то около 5 Мбит/с (на 300 Мбит/с +, если я не задушу в скрипте, а не в Интернете). Может быть, ошибка, хотя это не соответствует хорошо конверсии, о которой я могу думать. – Cynic

14

Нет, невозможно управлять Network Connectivity Emulation с помощью настроек Chrome или аргументов командной строки. Эмуляция сетевых подключений является частью встроенного отладчика Chrome. Один из способов решения этого - управлять отладчиком. Это можно сделать с помощью расширения или путем прямого управления отладчиком, см. explanation. Однако это не будет работать с WebDriver. Причина этого заключается в том, что может быть только один сеанс «отладки», и WebDriver уже использует его, см. explanation. Поскольку нет открытого интерфейса, также нет возможности контролировать его через WebDriver.

Для Device Mode & Mobile Emulation, который также является частью встроенного отладчика, имеется открытый интерфейс (details) и, следовательно, его можно контролировать. Это можно сделать с помощью возможностей WebDriver. Два варианта: 1) Укажите имя устройства. 2) Введите свои собственные параметры (ограниченные).

+0

Это больше не верно, см принятое решение. – tomasz

5

Хотя это очень приветствуемый и полезный бит функциональности, для серьезных испытаний я считаю, что обычные методы сетевого моделирования все еще остаются.

Я знаю 2 решения в дополнение к тем, которые связаны с alrady - Charles web proxy (очень полезный инструмент - коммерческий) и реализация собственного рецепта с использованием управления трафиком Linux (например, см. Главу 6 из LAMPe2e).

Путем вмешательства в сетевые подключения, а не в браузере, вы получаете надлежащую меру воздействия независимо от используемого браузера.

Почему вы просто хотите использовать функциональность Chrome?

Смежные вопросы