t.me/atinfo_chat Telegram группа по автоматизации тестирования

Не запускается мобильная эмуляция в Selenium Webdriver 2.50.0 C#

Теги: #<Tag:0x00007f748997fb08> #<Tag:0x00007f748997f950> #<Tag:0x00007f748997f838>

В NuGet уже вышла новая версия Selenium Webdriver 2.50.0 и обновившись до нее я сразу же столкнулся с проблемой запуска мобильного эмулятора на Chrome.

Раньше я использовал следующий код:

var mobileEmulation = new Dictionary<string, string>
            {
                {"deviceName", device}
            };
   ChromeOptions options = new ChromeOptions();
   options.AddAdditionalCapability("mobileEmulation", mobileEmulation);

И все работало. Я мог запустить бразуер в режиме эмуляции iPhone 4 или Samsung и т.д.

Теперь на строке:
options.AddAdditionalCapability(“mobileEmulation”, mobileEmulation);
Мне выдает ошибку: There is already an option for the mobileEmulation capability. Please use that instead. Parameter name: capabilityName

Из документации этого метода ничего не понял:(
Ссылки на доки:

  1. https://code.google.com/p/selenium/source/browse/dotnet/src/webdriver/Chrome/ChromeOptions.cs?r=62aea56fc6bdc3d4e5fa90196aa456efd8dd5e1c&spec=svn62aea56fc6bdc3d4e5fa90196aa456efd8dd5e1c
  2. http://selenium.googlecode.com/svn/trunk/docs/api/dotnet/html/AllMembers_T_OpenQA_Selenium_Chrome_ChromeOptions.htm
  3. http://selenium.googlecode.com/svn/trunk/docs/api/dotnet/html/AllMembers_T_OpenQA_Selenium_Remote_DesiredCapabilities.htm

Подскажите пожалуйста, как теперь это делать правильно в Selenium Webdriver 2.50.0.

Попробуйте вызвать EnableMobileEmulation. Я чет не помню этого метода в 2.48, вероятно его добавили в 2.49 или 2.50
dotnet/src/webdriver/Chrome/ChromeOptions.cs: EnableMobileEmulation

А вы шустрый, change-у всего 22 часа :smile:

Как сказали выше, теперь можно использовать EnableMobileEmulation

В ченджлоге про это написано https://github.com/SeleniumHQ/selenium/blob/4edf929e9162cb1b7d3fa04abdf4847cc0abb122/dotnet/CHANGELOG

Вообще достаточно странно что такие фичи не тестируются на стороне селениума от слова вообще.

Уже вышла версия 2.50.1, где был сделан фикс для нового метода.

Теперь мобильная эмуляция задается двумя способами:

  1. С именем девайса
  2. С настройками для девайса (можно задать кастомно)

Первый вариант:

    ChromeOptions options = new ChromeOptions();
    options.EnableMobileEmulation("Device_name");

Второй вариант:

ChromeOptions options = new ChromeOptions();
ChromeMobileEmulationDeviceSettings settings = new ChromeMobileEmulationDeviceSettings();
settings.EnableTouchEvents = true;
settings.Height = 100;
settings.Width = 200;
options.EnableMobileEmulation(settings);

Всем спасибо за помощь, новый подход оказался намного проще чем старый. Юзаем на здоровье!

1 Симпатия