Protractor: Existe-t-il un moyen de spécifier un serveur proxy dans la configuration?

Créé le 28 sept. 2013  ·  24Commentaires  ·  Source: angular/protractor

question

Commentaire le plus utile

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

Tous les 24 commentaires

Pouvez-vous en montrer un exemple?

Vous devez le spécifier dans la section capabilities de la configuration. Consultez ce document pour savoir comment créer la configuration JSON pour les proxies de pilote Web: https://code.google.com/p/selenium/wiki/DesiredCapabilities#Proxy_JSON_Object

Je l'ai essayé, cela n'a pas vraiment fonctionné pour moi. Cela pourrait être mon inexpérience avec cela. Vous ou quelqu'un avez un exemple rapide que vous pouvez montrer? Cela irait très loin.

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

Cette solution ne fonctionne pas pour notre configuration. Des idées sur ce que je fais mal? J'obtiens l'erreur suivante dans la ligne de commande lorsque j'essaye d'exécuter Protractor:

> Fatal error: protractor exited with code: 1

Voici mon fichier de configuration:

// 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
   }
};

J'ai essayé vos capacités et cela fonctionne pour moi. Lorsque je mets un faux httpProxy, je vois des erreurs «impossible de se connecter au proxy» dans le navigateur, mais les tests tentent toujours de s'exécuter. Vos tests fonctionnent-ils correctement sans le proxy? Comment échouent-ils dans ce cas?

D'accord, ce que j'ai trouvé fonctionne, c'est simplement de définir le baseurl sur le site de test https, comme ceci:

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
   }
};

Salut,

J'ai réussi à faire fonctionner le proxy avec ce que vous avez fait ici, alors merci pour cela, je veux maintenant ajouter la variable noProxy afin que je puisse exclure mes services internes d'aller au proxy. J'ai essayé ce qui suit mais la partie noProxy ne s'habitue pas. J'utilise des 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'
  }

},

Salut,
Je ne pouvais pas le faire fonctionner avec un proxy authentifié. J'ai essayé:

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

et

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

J'essaye de compléter https://docs.angularjs.org/tutorial/step_03 , en utilisant le navigateur Chrome.

Cela ne fonctionne pas non plus pour moi - je dois fournir host: port avec nom d'utilisateur / mot de passe et j'ai essayé toutes les suggestions ci-dessus et rien ne semble fonctionner. Cependant, lorsque je quitte Internet de l'entreprise et que j'essaye sans proxy, tout fonctionne bien. De l'aide?

En fait, mon problème a été résolu en configurant des variables système

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

Cela doit être rouvert, ici chez GE Software, la définition de http_proxy et https_proxy dans la configuration ne permet toujours pas à Protractor d'envoyer à Saucelabs le code de sortie final des résultats du test, ce qui fait que Saucelabs échoue au test en raison de son inactivité.

@jonniespratley est-ce que protractor config --proxy=http://user:password<strong i="6">@proxy_url</strong>:port ne fonctionne pas pour vous?

J'ai essayé d'exécuter un test de rapporteur sur le laboratoire de sauce, mais il obtient une erreur ETIMEDOUT. Je suis derrière le pare-feu d'entreprise et j'ai configuré le proxy dans le fichier de configuration du rapporteur et la variable d'environnement. La configuration ne semble pas fonctionner. Voici l'erreur que je reçois

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

Une idée? J'apprécierai vraiment l'aide.

Je reçois des erreurs similaires. Je suis derrière un proxy d'entreprise et je ne peux pas soumettre de test à Browserstack.

/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)

Ce qui a finalement fonctionné pour nous pour sortir de notre proxy d'entreprise et passer au serveur sélénium de perfecto mobile était d'utiliser la configuration webDriverProxy :

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

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

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

Je travaille derrière le proxy d'entreprise j'ai essayé d'ajouter ce code dans conf.js
'Procuration': {
'proxyType': 'manuel',
'httpProxy': ' utilisateur: [email protected] : 8080'
'sslProxy': ' utilisateur: [email protected] : 8080'
}

cela fonctionnait bien mais le temps d'exécution de l'application a augmenté, ce qui a échoué. Oui, je peux augmenter le temps par défaut, mais je ne veux pas que mon application prenne plus de temps à s'exécuter.
Quelqu'un peut-il m'aider à résoudre ce problème.

Merci d'avance.

@gregjacobs J'utilise également webDriverProxy avec perfecto. Cela fonctionnait pour moi il y a quelque temps. Après la mise à niveau vers 4.x ou 5.x, je ne pouvais plus le faire fonctionner. Cela fonctionne-t-il toujours pour vous après la mise à niveau?

Aucune des options de proxy de https://github.com/angular/protractor/blob/master/lib/config.ts ne fonctionne pour moi. Quelqu'un a-t-il eu de la chance pour configurer le proxy dans la v5?

@ deli6z
Proxy et rapporteur BrowserMob établis avec ces capacités - fonctionne 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 J'ai besoin de spécifier un nom d'utilisateur / mot de passe pour notre proxy utilisé sur la propriété webDriverProxy . Savez-vous comment?

@ luker2 Malheureusement, je ne suis pas tout à fait sûr, mais est-ce que webDriverProxy: 'http://username:[email protected]:8080' ne fonctionne pas? (où 8080 est le port de votre proxy?)

@gregjacobs oui, je n'avais pas encore suivi mais c'est ce qui a fini par marcher!

Pour d'autres, j'ai aussi dû encoder url le nom d'utilisateur: partie

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

@ luker2 Impressionnant, heureux d'entendre que cela fonctionne! Et merci d'avoir publié cet article sur l'encodage uri du nom d'utilisateur et du mot de passe - bonne prise!

Cette page vous a été utile?
0 / 5 - 0 notes