Protractor: Gibt es eine Möglichkeit, einen Proxyserver in der Konfiguration anzugeben?

Erstellt am 28. Sept. 2013  ·  24Kommentare  ·  Quelle: angular/protractor

question

Hilfreichster Kommentar

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

Alle 24 Kommentare

Können Sie ein Beispiel dafür zeigen?

Sie müssen es im Abschnitt capabilities der Konfiguration angeben. In diesem Dokument finden Sie Informationen zum Erstellen der JSON-Konfiguration für Webdriver-Proxys: https://code.google.com/p/selenium/wiki/DesiredCapabilities#Proxy_JSON_Object

Versuchte es, funktionierte nicht wirklich für mich. Es könnte meine Unerfahrenheit damit sein. Haben Sie oder jemand ein kurzes Beispiel, das Sie zeigen können? Es würde einen langen Weg gehen.

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

Diese Lösung funktioniert bei unserem Setup nicht. Irgendwelche Ideen, was ich falsch mache? Beim Versuch, Protractor auszuführen, wird in der Befehlszeile der folgende Fehler angezeigt:

> Fatal error: protractor exited with code: 1

Hier ist meine Konfigurationsdatei:

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

Ich habe Ihre Fähigkeiten ausprobiert und es funktioniert für mich. Wenn ich einen gefälschten httpProxy eingebe, wird im Browser die Fehlermeldung "Verbindung zum Proxy konnte nicht hergestellt werden" angezeigt, die Tests werden jedoch weiterhin ausgeführt. Laufen Ihre Tests ohne Proxy korrekt? Wie scheitern sie in diesem Fall?

Okay, ich habe festgestellt, dass es funktioniert, wenn Sie einfach die Basis-URL auf die https-Testseite setzen, wie folgt:

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

Hallo,

Ich habe es geschafft, dass der Proxy mit dem funktioniert, was ihr hier gemacht habt. Vielen Dank dafür. Ich möchte jetzt die Variable noProxy hinzufügen, damit ich meine internen Dienste vom Zugriff auf den Proxy ausschließen kann. Ich habe Folgendes versucht, aber der noProxy-Teil wird nicht verwendet. Ich benutze 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'
  }

},

Hallo,
Ich konnte es nicht mit einem authentifizierten Proxy zum Laufen bringen. Ich habe versucht:

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

und

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

Ich versuche, https://docs.angularjs.org/tutorial/step_03 mit dem Browser Chrome zu vervollständigen.

Funktioniert auch bei mir nicht - ich muss host: port zusammen mit Benutzername / Passwort angeben und habe alle oben genannten Vorschläge ausprobiert und nichts scheint zu funktionieren. Wenn ich jedoch aus dem Internet des Unternehmens aussteige und es ohne Proxy versuche, funktioniert alles einwandfrei. Irgendeine Hilfe?

Eigentlich wurde mein Problem durch das Einrichten von Systemvariablen gelöst

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

Dies muss hier bei GE Software erneut geöffnet werden. Wenn Sie http_proxy und https_proxy in der Konfiguration festlegen, kann Protractor Saucelabs immer noch nicht den endgültigen Exit-Code der Testergebnisse senden, sodass Saucelabs den Test aufgrund von Inaktivität nicht bestehen.

@jonniespratley funktioniert protractor config --proxy=http://user:password<strong i="6">@proxy_url</strong>:port nicht für Sie?

Ich habe versucht, einen Winkelmessertest im Saucenlabor durchzuführen, aber es wurde ein ETIMEDOUT-Fehler angezeigt. Ich bin hinter der Unternehmensfirewall und habe den Proxy in der Winkelmesser-Konfigurationsdatei und der Umgebungsvariablen konfiguriert. Die Konfiguration scheint nicht zu funktionieren. Unten ist der Fehler, den ich bekomme

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

Irgendeine Idee? Ich werde die Hilfe sehr schätzen.

Ich erhalte ähnliche Fehler. Ich stehe hinter einem Corporate Proxy und kann keinen Test an den Browserstack senden.

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

Was schließlich für uns funktionierte, um aus unserem Unternehmensproxy auf den Selenserver von perfecto mobile zu gelangen, war die Verwendung der Konfiguration webDriverProxy :

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

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

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

Ich arbeite hinter dem Corporate Proxy und habe versucht, diesen Code in conf.js hinzuzufügen
'Proxy': {
'proxyType': 'manual',
'httpProxy': ' Benutzer: [email protected] : 8080'
'sslProxy': ' Benutzer: [email protected] : 8080'
}}

Es hat gut funktioniert, aber die Ausführungszeit der Anwendung hat sich erhöht, was zu Fehlern führt. Ja, ich kann die Standardzeit erhöhen, möchte aber nicht, dass die Ausführung meiner Anwendung länger dauert.
Kann mir jemand helfen, das zu beheben.

Danke im Voraus.

@gregjacobs Ich verwende webDriverProxy auch mit perfecto. Es hat vor einiger Zeit für mich funktioniert. Nach dem Upgrade auf 4.x oder 5.x konnte ich es nicht mehr zum Laufen bringen. Funktioniert es nach dem Upgrade noch für Sie?

Keine der Proxy-Optionen von https://github.com/angular/protractor/blob/master/lib/config.ts funktioniert für mich. Hat jemand Glück gehabt, Proxy in Version 5 zu konfigurieren?

@ deli6z
Etablierter BrowserMob-Proxy und Winkelmesser mit diesen Funktionen - funktioniert einwandfrei

  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 Ich muss einen Benutzernamen / ein Passwort für unseren Proxy angeben, der für die Eigenschaft webDriverProxy . Weißt du wie?

@ luker2 Leider bin ich mir nicht ganz sicher, aber funktioniert webDriverProxy: 'http://username:[email protected]:8080' nicht? (Wo ist 8080 der Port Ihres Proxys?)

@gregjacobs ja, ich hatte noch nicht

Für andere musste ich auch den Benutzernamen: Passwort- Teil URL codieren, um Sonderzeichen zu entkommen ...

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

@ luker2 Super , ich Laufen gebracht hast! Und danke, dass du diesen Artikel über die Uri-Codierung von Benutzername und Passwort gepostet hast - guter Fang!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen