Установить прокси в nightwatch.js

Я пишу интеграционные тесты, используя nightwatch.js в приложении Node.js. Для конкретного теста я хочу, чтобы nightwatch подключался через proxy. Как правильно это сделать? Я ничего не могу найти в его официальной документации или в его Группа Google.

Документация Selenium предлагает установить его в экземпляре веб-драйвера, как описано здесь. Я не уверен, как это сделать через nightwatch.


person kodeninja    schedule 21.05.2015    source источник


Ответы (3)


В файле конфигурации nightwatch.json вы должны иметь возможность установить параметр прокси в желаемые возможности:

"chrome" : {
  "desiredCapabilities": {
    "browserName": "chrome",
    "javascriptEnabled": true,
    "acceptSslCerts": true,
    "chromeOptions" : {
      "args" : [
        "disable-extensions",
        "start-maximized"
      ]
    },
    "proxy": {
      "proxyType": "manual",
      "httpProxy": "your_proxy:8080"
    }
  }
},

Проверьте этот документ: https://code.google.com/p/selenium/wiki/JsonWireProtocol#Proxy_JSON_Object

person Nicolas Pennec    schedule 22.05.2015
comment
если вам нужно авторизоваться через прокси "httpProxy": "your_login:your_password@your_proxy:8080" - person sp3c1; 02.06.2016

Я наткнулся на этот вопрос во время поиска прокси-решения socks5. Когда я использовал реализацию из документации JsonWireProtocol с использованием socksProxy свойство, я всегда получал следующую ошибку:

message: 'unknown error: cannot parse capability: proxy from unknown error:
proxyType is \'manual\' but no manual proxy capabilities were found

Использование прокси socks5, настроенного через файл proxy.pac - proxyType: 'pac' с использованием proxyAutoconfigUrl работало без проблем. Но это не подходило для моего варианта использования.

Немного повозившись, я наконец нашел два решения этой проблемы:

  1. Использование аргументов CLI для chromedriver
desiredCapabilities: {
  browserName: 'chrome',
  /* … */
  chromeOptions: {
    args: [
      '--proxy-server=socks5://proxy_url:proxy_port'
    ]
  }
}

*edit: похоже, что это было удалено
2. Использование свойства sslProxy
Поскольку socks-прокси теоретически является не чем иным, как туннелем ssl, я подумал, что могу дать этому свойству другое пытаться. Решение, благодаря которому оно наконец заработало, выглядело так:

desiredCapabilities: {
  browserName: 'chrome',
  /* … */
  proxy: {
    proxyType: 'manual',
    sslProxy: 'socks5://proxy_url:proxy_port'
  }
}

Надеюсь, что этот ответ поможет всем, кто ищет помощь в отношении прокси socks5. :)
Но более важно, чтобы chromedriver правильно реализовывал JsonWireProtocol в будущем.

person TheBay0r    schedule 30.01.2017
comment
при использовании варианта 2 Chrome просто игнорирует настройку - person Toolkit; 14.05.2017
comment
@Toolkit Я только что попробовал еще раз. К сожалению, я могу это подтвердить. Возможно, что его удалили. Если я найду новый способ, как это сделать, я обновлю свой пост - person TheBay0r; 15.05.2017

Nightwatch изменили работу прокси-объекта в файле nightwatch.conf.js, когда начали использовать прокси-агент вместо http-прокси, к сожалению, это нигде не задокументировано. Но он все еще существует, вам просто нужно передать разные параметры в прокси-объекте. «Протоколы», которые он принимает, перечислены на proxy-agent github. пример.

firefox: {
      desiredCapabilities: {
        browserName: 'firefox',
        version: 'latest',
      },
      proxy: {
        host:'127.0.0.1',
        port:8001,
        protocol: 'http',
      },
    },
person sonhu    schedule 08.09.2017