Перейти к содержимому

Фотография

Как указать для WebDriver(FireFoxWebDriver) три параметра?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 19 апреля 2012 - 08:17

Здравствуйте!
Возникла необходимость указывать для FireFoxWebDriver три параметра.
Пробовал как указано здесь, но когда указала параметр, типа "DesiredCapabilities", в FireFoxWebDriver, получаю ошибку "Specified firefox binary location does not exist or is not a real file: FirefoxBinary".

Если смотреть какого типа может принимать FireFoxWebDriver, то там есть ICapabilities, но как ему указать что нужно использовать(Platform, FirefoxBinary и FirefoxProfile)?

DesiredCapabilities Caps = new DesiredCapabilities();
Platform WinPlatform = new Platform(PlatformType.Windows);

FirefoxBinary FireBin = new FirefoxBinary("C:\\Program Files\\Mozilla Firefox\\firefox.exe");
FireBin.TimeoutInMilliseconds = 130000;

FirefoxProfile FireProfile = new FirefoxProfile();
FireProfile.Port = 9966;
            
Caps.SetCapability(FirefoxDriver.ProfileCapabilityName, FireProfile);
Caps.SetCapability(FirefoxDriver.BinaryCapabilityName, FireBin);
Caps.Platform = WinPlatform;
            

driver = new FirefoxDriver(cap);

Путь к FireFox указан верный.
Пишу на C#.
  • 0

#2 Rara

Rara

    Активный участник

  • Members
  • PipPip
  • 83 сообщений
  • ФИО:Кондрашов Юрий Алексеевич
  • Город:Минск, Беларусь


Отправлено 19 апреля 2012 - 11:55

Перепроверьте путь к вашему FireFox'у. Попробуйте из командной строки из любой папки выполнить команду:
C:\Program Files\Mozilla Firefox\firefox.exe
Запустится при этом FF или нет?
  • 0
Я бы переписал жизнь, но Бог не дает мне исходники

#3 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 19 апреля 2012 - 12:34

Перепроверьте путь к вашему FireFox'у. Попробуйте из командной строки из любой папки выполнить команду:

C:\Program Files\Mozilla Firefox\firefox.exe
Запустится при этом FF или нет?

Запускается
  • 0

#4 sawoy

sawoy

    Новый участник

  • Members
  • Pip
  • 51 сообщений
  • ФИО:Alex Savchuk

Отправлено 20 апреля 2012 - 08:57

Попробуйте вот эти два варианта:

1. Если TimeoutInMilliseconds не критичен, то

DesiredCapabilities Caps = new DesiredCapabilities();

FirefoxProfile FireProfile = new FirefoxProfile();
FireProfile.Port = 9966;            
Caps.SetCapability(FirefoxDriver.ProfileCapabilityName, FireProfile);

Caps.SetCapability(FirefoxDriver.BinaryCapabilityName, "C:\\Program Files\\Mozilla Firefox\\firefox.exe");

Platform WinPlatform = new Platform(PlatformType.Windows);
Caps.Platform = WinPlatform;
            
driver = new FirefoxDriver(cap);

// here should be code which set up TimeoutInMilliseconds for currently used FirefoxBinary if it possible. 

2. Если не найдется способа доступа к FirefoxBinary в driver для установки TimeoutInMilliseconds, то:

FirefoxBinary FireBin = new FirefoxBinary("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); 
FireBin.TimeoutInMilliseconds = 130000; 

FirefoxProfile FireProfile = new FirefoxProfile();
FireProfile.Port = 9966;

TimeSpan commandTimeout = TimeSpan.FromSeconds(60);
    
driver = new FirefoxDriver(FireBin, FireProfile, commandTimeout);

При этом теряется установленная Platform, но я вообще не вижу место в коде, где она используется.

UPD: О, вижу. Но только влияет текущая платформа, которая вычисляется на основе Env данных.
Причем влияет как на FirefoxBinary, так и на FirefoxDriver.
Но плохо представляю, зачем может понадобиться подмена текущей платформы. Для какого-то workaround?

Чтобы было понятно, что происходит при инициализации FirefoxDriver при передаче DesiredCapabilities с установленным BinaryCapabilityName, можно смотреть http://code.google.c...code\.com&l=251

Эта строка объясняет, почему при Вашем использовании считается, что указан путь "FirefoxBinary".

UPD: по идее, это как минимум improvement для .NET (или всех) версии FirefoxDriver. Для FirefoxBinary необходима реализация механизма, используемого для FirefoxProfile, а именно - использование объекта, если это FirefoxBinary объект, либо восстановление объекта из base64 строки, если это строка, либо "пустая" инициализация.

Сообщение отредактировал sawoy: 20 апреля 2012 - 10:14

  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных