Protractor: ¿Hay alguna forma de especificar un servidor proxy en la configuración?

Creado en 28 sept. 2013  ·  24Comentarios  ·  Fuente: angular/protractor

question

Comentario más útil

capabilities: {
  'proxy': {
    'proxyType': 'manual',
    'httpProxy': 'hostname.com:1234'
  }
}

Todos 24 comentarios

¿Puede mostrar un ejemplo de esto?

Debe especificarlo en la sección capabilities de la configuración. Consulte este documento para obtener información sobre cómo crear la configuración JSON para proxies de controlador web: https://code.google.com/p/selenium/wiki/DesiredCapabilities#Proxy_JSON_Object

Lo intenté, realmente no funcionó para mí. Podría ser mi inexperiencia con eso. ¿Usted o alguien tiene un ejemplo rápido que pueda mostrar? Sería de gran ayuda.

capabilities: {
  'proxy': {
    'proxyType': 'manual',
    'httpProxy': 'hostname.com:1234'
  }
}

Esta solución no funciona para nuestra configuración. ¿Alguna idea de lo que estoy haciendo mal? Recibo el siguiente error en la línea de comando cuando intento ejecutar Transportador:

> Fatal error: protractor exited with code: 1

Aquí está mi archivo de configuración:

// A reference configuration file.
exports.config = {
   // ----- How to setup Selenium -----
   //
   // There are three ways to specify how to use Selenium. Specify one of the
   // following:
   //
   // 1. seleniumServerJar - to start Selenium Standalone locally.
   // 2. seleniumAddress - to connect to a Selenium server which is already
   //    running.
   // 3. sauceUser/sauceKey - to use remote Selenium servers via SauceLabs.

   // The location of the selenium standalone server .jar file.
   seleniumServerJar: './selenium/selenium-server-standalone-2.35.0.jar',
   // The port to start the selenium server on, or null if the server should
   // find its own unused port.
   seleniumPort: null,
   // Chromedriver location is used to help the selenium standalone server
   // find chromedriver. This will be passed to the selenium jar as
   // the system property webdriver.chrome.driver. If null, selenium will
   // attempt to find chromedriver using PATH.
   chromeDriver: './selenium/chromedriver',
   // Additional command line options to pass to selenium. For example,
   // if you need to change the browser timeout, use
   // seleniumArgs: ['-browserTimeout=60'],
   seleniumArgs: [],

   // If sauceUser and sauceKey are specified, seleniumServerJar will be ignored.
   // The tests will be run remotely using SauceLabs.
   sauceUser: null,
   sauceKey: null,

   // ----- What tests to run -----
   //
   // Spec patterns are relative to the location of this config.
   specs: [
      './e2e/*-spec.js'
   ],

   // ----- Capabilities to be passed to the webdriver instance ----
   //
   // For a full list of available capabilities, see
   // https://code.google.com/p/selenium/wiki/DesiredCapabilities
   // and
   // https://code.google.com/p/selenium/source/browse/javascript/webdriver/capabilities.js
   capabilities: {
      'browserName': 'chrome',
      'proxy': {
         'proxyType': 'manual',
         'httpProxy': 'https://localhost.com:8443/'
      }
   },

   // A base URL for your application under test. Calls to protractor.get()
   // with relative paths will be prepended with this.
   baseUrl: 'http://localhost:9999',

   // Selector for the element housing the angular app - this defaults to
   // body, but is necessary if ng-app is on a descendant of <body>
   rootElement: 'body',

   // ----- Options to be passed to minijasminenode -----
   jasmineNodeOpts: {
      // onComplete will be called just before the driver quits.
      onComplete: null,
      // If true, display spec names.
      isVerbose: true,
      // If true, print colors to the terminal.
      showColors: true,
      // If true, include stack traces in failures.
      includeStackTrace: true,
      // Default time to wait in ms before a test fails.
      defaultTimeoutInterval: 10000
   }
};

Probé tus capacidades y me funciona. Cuando coloco un httpProxy falso, veo errores 'no se pudo conectar al proxy' en el navegador, pero las pruebas aún intentan ejecutarse. ¿Sus pruebas se ejecutan correctamente sin el proxy? ¿Cómo fallan en ese caso?

De acuerdo, lo que encontré que funciona es simplemente configurar la baseurl en el sitio de prueba https, así:

exports.config = {
   seleniumServerJar: './selenium/selenium-server-standalone-2.35.0.jar',

   seleniumPort: null,

   chromeDriver: './selenium/chromedriver',

   seleniumArgs: [],

   sauceUser: null,
   sauceKey: null,

   specs: [
      './e2e/*-spec.js'
   ],

   capabilities: {
      'browserName': 'chrome'
   },

   baseUrl: 'https://localhost:8443/',

   rootElement: 'body',

   jasmineNodeOpts: {
      // onComplete will be called just before the driver quits.
      onComplete: null,
      // If true, display spec names.
      isVerbose: true,
      // If true, print colors to the terminal.
      showColors: true,
      // If true, include stack traces in failures.
      includeStackTrace: true,
      // Default time to wait in ms before a test fails.
      defaultTimeoutInterval: 10000
   }
};

Hola,

Logré que el proxy funcionara con lo que ustedes han hecho aquí, así que gracias por eso, ahora quiero agregar la variable noProxy para poder excluir mis servicios internos de ir al proxy. He intentado lo siguiente pero la parte noProxy no se está utilizando. Estoy usando PhantomJs.

  'proxy': {
      'proxyType': 'manual',
      'httpProxy': 'http://proxy.blah.co.uk:8080'
      'httpsProxy': 'http://proxy.blah.co.uk:8080'
      'noProxy': 'blah.blah.co.uk,*blah.blah.co.uk,.blah.blah.co.uk'
  }

},

Hola,
No pude hacer que funcione con un proxy autenticado. Yo he tratado:

'proxy': {
  'proxyType': 'manual',
  'httpProxy': 'user:[email protected]:3128'
  'sslProxy': 'user:[email protected]:3128'
}

y

'proxy': {
  'proxyType': 'manual',
  'httpProxy': 'http://user:[email protected]:3128'
  'sslProxy': 'http://user:[email protected]:3128'
}

Estoy intentando completar https://docs.angularjs.org/tutorial/step_03 , usando el navegador Chrome.

Tampoco funciona para mí: tengo que proporcionar host: puerto junto con el nombre de usuario / contraseña e intenté todas las sugerencias anteriores y nada parece funcionar. Sin embargo, cuando salgo de Internet de la empresa y lo intento sin proxy, todo funciona bien. ¿Alguna ayuda?

En realidad, mi problema se resolvió configurando variables del sistema

 http_proxy   http://user:password<strong i="6">@proxy_url</strong>:port
 https_proxy   http://user:password<strong i="7">@proxy_url</strong>:port

Esto debe volver a abrirse, aquí en GE Software, establecer el http_proxy y https_proxy en la configuración aún no permite que Transportador envíe a Saucelabs el código de salida final de los resultados de la prueba, lo que hace que Saucelabs falle la prueba debido a la inactividad.

@jonniespratley, ¿ protractor config --proxy=http://user:password<strong i="6">@proxy_url</strong>:port no funciona para ti?

Intenté ejecutar la prueba de transportador en el laboratorio de salsa, pero recibí el error ETIMEDOUT. Estoy detrás del firewall corporativo y he configurado el proxy en el archivo de configuración del transportador y la variable de entorno. La configuración no parece funcionar. A continuación se muestra el error que recibo

Error: ETIMEDOUT connect ETIMEDOUT 151.444.33.22:80
    at ClientRequest.<anonymous> (/Users/user123/Desktop/Sample/example-sandbox/node_modules/protractor/node_modules/selenium-webdriver/http/index.js:174:16)
    at emitOne (events.js:77:13)
    at ClientRequest.emit (events.js:169:7)
    at Socket.socketErrorListener (_http_client.js:259:9)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at emitErrorNT (net.js:1253:8)
    at doNTCallback2 (node.js:439:9)
    at process._tickCallback (node.js:353:17)
From: Task: WebDriver.createSession()
    at Function.webdriver.WebDriver.acquireSession_ (/Users/user123/Desktop/Sample/example-sandbox/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:157:22)
    at Function.webdriver.WebDriver.createSession (/Users/user123/Desktop/Sample/example-sandbox/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:131:30)
    at [object Object].Builder.build (/Users/user123/Desktop/Sample/example-sandbox/node_modules/protractor/node_modules/selenium-webdriver/builder.js:445:22)
    at [object Object].DriverProvider.getNewDriver (/Users/user123/Desktop/Sample/example-sandbox/node_modules/protractor/lib/driverProviders/driverProvider.js:42:27)
    at [object Object].Runner.createBrowser (/Users/user123/Desktop/Sample/example-sandbox/node_modules/protractor/lib/runner.js:190:37)
    at /Users/user123/Desktop/Sample/example-sandbox/node_modules/protractor/lib/runner.js:280:21
    at _fulfilled (/Users/user123/Desktop/Sample/example-sandbox/node_modules/protractor/node_modules/q/q.js:834:54)
    at self.promiseDispatch.done (/Users/user123/Desktop/Sample/example-sandbox/node_modules/protractor/node_modules/q/q.js:863:30)
    at Promise.promise.promiseDispatch (/Users/user123/Desktop/Sample/example-sandbox/node_modules/protractor/node_modules/q/q.js:796:13)
    at /Users/user123/Desktop/Sample/example-sandbox/node_modules/protractor/node_modules/q/q.js:556:49
[launcher] Process exited with error code 1

¿Alguna idea? Realmente agradeceré la ayuda.

Recibo errores similares. Estoy detrás de un proxy corporativo y no puedo enviar una prueba a la pila de navegadores.

/Users/Documents/coding/sublime/simpleboilerplate/node_modules/selenium-webdriver/lib/promise.js:654
    throw error;
    ^

Error: ETIMEDOUT connect ETIMEDOUT 208.52.180.201:80
    at ClientRequest.<anonymous> (/Users/Documents/coding/sublime/simpleboilerplate/node_modules/selenium-webdriver/http/index.js:381:15)
    at emitOne (events.js:77:13)
    at ClientRequest.emit (events.js:169:7)
    at Socket.socketErrorListener (_http_client.js:259:9)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at emitErrorNT (net.js:1253:8)
    at doNTCallback2 (node.js:441:9)
    at process._tickCallback (node.js:355:17)
From: Task: WebDriver.createSession()
    at Function.createSession (/Users/Documents/coding/sublime/simpleboilerplate/node_modules/selenium-webdriver/lib/webdriver.js:329:24)
    at Builder.build (/Users/Documents/coding/sublime/simpleboilerplate/node_modules/selenium-webdriver/builder.js:458:24)
    at Object.<anonymous> (/Users/Documents/coding/sublime/simpleboilerplate/bs.js:13:3)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Function.Module.runMain (module.js:467:10)
    at startup (node.js:136:18)
    at node.js:963:3
From: Task: WebDriver.navigate().to(http://www.google.com)
    at WebDriver.schedule (/Users/Documents/coding/sublime/simpleboilerplate/node_modules/selenium-webdriver/lib/webdriver.js:377:17)
    at Navigation.to (/Users/Documents/coding/sublime/simpleboilerplate/node_modules/selenium-webdriver/lib/webdriver.js:1027:25)
    at WebDriver.get (/Users/Documents/coding/sublime/simpleboilerplate/node_modules/selenium-webdriver/lib/webdriver.js:795:28)
    at Object.<anonymous> (/Users/Documents/coding/sublime/simpleboilerplate/bs.js:15:8)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Function.Module.runMain (module.js:467:10)
    at startup (node.js:136:18)

Lo que finalmente funcionó para salir de nuestro proxy corporativo y pasar al servidor selenium de perfecto mobile fue usar la configuración webDriverProxy :

exports.config = {
    framework: 'jasmine',
    seleniumAddress: 'https://yourCloudName.perfectomobile.com/nexperience/perfectomobile/wd/hub',

    webDriverProxy: 'http://your.proxy.here:8080',

    capabilities: { ... },
    specs: ['myspec.js']
};

Estoy trabajando detrás del proxy corporativo intenté agregar este código en conf.js
'proxy': {
'proxyType': 'manual',
'httpProxy': ' usuario: contraseñ[email protected] : 8080'
'sslProxy': ' usuario: contraseñ[email protected] : 8080'
}

estaba funcionando bien, pero el tiempo de ejecución de la aplicación ha aumentado, lo que da como resultado un error. Sí, puedo aumentar el tiempo predeterminado pero no quiero que mi aplicación tarde más en ejecutarse.
¿Alguien puede ayudarme a solucionar este problema?

Gracias por adelantado.

@gregjacobs Estoy usando webDriverProxy con perfecto también. Me funcionó por un tiempo. Después de actualizar a 4.xo 5.x, no pude hacer que funcionara más. ¿Sigue funcionando para usted después de la actualización?

Ninguna de las opciones de proxy de https://github.com/angular/protractor/blob/master/lib/config.ts funciona para mí. ¿Alguien tuvo suerte configurando proxy en v5?

@ deli6z
Proxy BrowserMob establecido y transportador con estas capacidades - funciona bien

  capabilities: {
    'browserName': 'chrome',
    'args': ['disable-web-security'],
    'proxy': {
      'proxyType': 'manual',
      'httpProxy': '10.179.70.127:10801',
      'sslProxy': '10.179.70.127:10801',
      "autodetect": 'false'

    }
}

@gregjacobs Necesito especificar un nombre de usuario / contraseña para nuestro proxy utilizado en la propiedad webDriverProxy . ¿Sabes cómo?

@ luker2 Lamentablemente, no estoy exactamente seguro, pero ¿ webDriverProxy: 'http://username:[email protected]:8080' no funciona? (donde 8080 es el puerto de su proxy?)

@gregjacobs sí, todavía no había hecho un seguimiento, ¡pero eso es lo que terminó funcionando!

Para otros, también tuve que codificar la URL del nombre de usuario: parte de la

webDriverProxy: `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@your.proxy.here:8080`

@ luker2 ¡ Genial, me alegra saber que lo hiciste funcionar! Y gracias por publicar ese artículo sobre la codificación uri del nombre de usuario y la contraseña. ¡Buen truco!

¿Fue útil esta página
0 / 5 - 0 calificaciones