Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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

selenium
webdriver
chrome
Теги: #<Tag:0x00007f7b6430bb50> #<Tag:0x00007f7b6430b858> #<Tag:0x00007f7b6430b6a0>

(Денис Корейба) #1

В 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.


(Дмитрий Жарий) #2

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


(Stan) #3

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

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

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

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


(Денис Корейба) #4

Уже вышла версия 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);

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