Установить транспортир профиля firefox

Я пытаюсь использовать этот код:

var makeFirefoxProfile = function (preferenceMap) {
  var deferred = q.defer();
  var firefoxProfile = new FirefoxProfile();

  for (var key in preferenceMap) {
    firefoxProfile.setPreference(key, preferenceMap[key]);
  }

  firefoxProfile.encoded(function (encodedProfile) {
    var capabilities = {
      browserName: "firefox",
      firefox_profile: encodedProfile
    };

    deferred.resolve(capabilities);
  });
  return deferred.promise;
};

  getMultiCapabilities: function () {
    return q.all([
      makeFirefoxProfile(
        {
          "browser.download.folderList": 2,
          "browser.download.dir": "D:/Automation",
          "browser.helperApps.alwaysAsk.force": false
        }
      )
    ]);
  },

Но он показывает ошибку: Ошибка: TypeError: profile.getTemplateDir не является функцией Я не знаю, как это исправить.


person Tam Vo    schedule 10.02.2017    source источник
comment
Какие версии Protractor, Firefox, q, firefox-profile вы используете? Пытаюсь воспроизвести проблему, но у меня пока работает (у меня точно такая же функция makeFirefoxProfile)   -  person alecxe    schedule 10.02.2017
comment
Protractor 5.0 Firefox 51.0.1 (64-разрядная версия) профиль Firefox: ^ 0.4.8,   -  person Tam Vo    schedule 10.02.2017
comment
Вы можете поддержать меня? Спасибо   -  person Tam Vo    schedule 10.02.2017
comment
Вы пытались выполнить webdriver-manager update, а затем снова запустить транспортир?   -  person alecxe    schedule 10.02.2017
comment
Привет, мне интересно, что profile = caps.get(Capability.PROFILE); это строка, а getTemplateDir() {return this.template_;} находится в профиле класса????   -  person Tam Vo    schedule 10.02.2017


Ответы (1)


похоже, что selenium-webdriver (который используется protractor) используется для принятия свойства возможности firefox_profile строки в кодировке base64. Но теперь он ожидает экземпляр selenium-webdriver/firefox.Profile. Итак, вот как вы можете решить свою проблему:

// make sure you have access to the selenium-webdriver firefox Profile class
var FirefoxProfile = require("selenium-webdriver/firefox").Profile;
//... 
// then change makeFirefoxProfile() function implementation with the following...

var makeFirefoxProfile = function (preferenceMap) {
  var profile = new FirefoxProfile();
  for (var key in preferenceMap) {
    profile.setPreference(key, preferenceMap[key]);
  }
  return q.resolve({
    browserName: "firefox",
    marionette: true,
    firefox_profile: profile
  });
};

Надеюсь, это поможет.

Обратите внимание, что пакет firefox-profile больше не нужен.

person saadtazi    schedule 13.02.2017