Protractor: هل هناك طريقة لتحديد خادم وكيل في التكوين؟

تم إنشاؤها على ٢٨ سبتمبر ٢٠١٣  ·  24تعليقات  ·  مصدر: angular/protractor

question

التعليق الأكثر فائدة

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

ال 24 كومينتر

هل يمكنك عرض مثال على هذا؟

تحتاج إلى تحديده في قسم capabilities من ملف التكوين. تحقق من هذا المستند للحصول على معلومات حول كيفية إنشاء تكوين JSON لوكلاء محرك الويب: https://code.google.com/p/selenium/wiki/DesiredCapabilities#Proxy_JSON_Object

حاولت ذلك ، لم تنجح معي حقًا. يمكن أن يكون عدم خبرتي في ذلك. هل لديك أو لدى أي شخص مثال سريع يمكنك إظهاره؟ سوف تقطع شوطا طويلا.

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

هذا الحل لا يعمل من أجل الإعداد لدينا. أي أفكار عما أفعله خطأ؟ تلقيت الخطأ التالي في سطر الأوامر عند محاولة تشغيل المنقلة:

> Fatal error: protractor exited with code: 1

هنا ملف التكوين الخاص بي:

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

لقد جربت قدراتك ، وهو يعمل معي. عندما أضع httpProxy زائفًا ، أرى أخطاء "تعذر الاتصال بالوكيل" في المتصفح ، لكن الاختبارات لا تزال تحاول التشغيل. هل تجري اختباراتك بشكل صحيح بدون الوكيل؟ كيف يفشلون في هذه الحالة؟

حسنًا ، ما وجدته يعمل هو فقط تعيين baseurl على موقع اختبار https ، مثل هذا:

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

مرحبا،

تمكنت من تشغيل الوكيل مع ما فعلته يا رفاق هنا ، لذا شكرًا على ذلك ، أريد الآن إضافة متغير noProxy حتى أتمكن من استبعاد خدماتي الداخلية من الانتقال إلى الوكيل. لقد جربت ما يلي ولكن لم يتم استخدام الجزء noProxy. أنا أستخدم 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'
  }

} ،

مرحبا،
لم أتمكن من جعله يعمل مع وكيل معتمد. لقد حاولت:

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

و

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

أحاول إكمال https://docs.angularjs.org/tutorial/step_03 باستخدام متصفح Chrome.

لا يعمل بالنسبة لي أيضًا - لا بد لي من توفير منفذ host: مع اسم المستخدم / كلمة المرور وقد جربت جميع الاقتراحات المذكورة أعلاه ولا يبدو أن أي شيء يعمل. ومع ذلك ، عندما أخرج من الإنترنت الخاص بالشركة وحاول بدون وكيل ، فكل شيء يعمل بشكل جيد. أي مساعدة؟

في الواقع ، تم حل مشكلتي عن طريق إعداد متغيرات النظام

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

يجب إعادة فتح هذا ، هنا في GE Software ، لا يزال إعداد http_proxy و https_proxy في التكوين لا يسمح لـ Protractor بإرسال كود الخروج النهائي لنتائج الاختبار من Saucelabs ، مما يجعل Saucelabs يفشل في الاختبار بسبب عدم النشاط.

jonniespratley هل protractor config --proxy=http://user:password<strong i="6">@proxy_url</strong>:port لا يعمل من أجلك؟

حاولت إجراء اختبار المنقلة في معمل الصلصة ، لكنني حصلت على خطأ ETIMEDOUT. أنا خلف جدار حماية الشركة وقمت بتكوين الوكيل في ملف تكوين المنقلة ومتغير البيئة. يبدو أن التكوين لا يعمل. يوجد أدناه الخطأ الذي أواجهه

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

اي فكرة؟ سأقدر حقا المساعدة.

أتلقى أخطاء مماثلة. أنا خلف وكيل شركة ولا يمكنني تقديم اختبار إلى 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)

ما نجحنا أخيرًا في الخروج من وكيل الشركة الخاص بنا وما يزيد عن خادم السيلينيوم الخاص بـ Perfecto هو استخدام webDriverProxy config:

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

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

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

أنا أعمل خلف وكيل الشركة حاول إضافة هذا الرمز في conf.js
"الوكيل": {
'proxyType': 'يدوي'،
'httpProxy': ' user: [email protected] : 8080'
'sslProxy': ' user: [email protected] : 8080'
}

كان يعمل بشكل جيد ولكن وقت تنفيذ التطبيق زاد مما فشل في تحقيق النتائج ، نعم يمكنني زيادة الوقت الافتراضي ولكن لا أريد أن يستغرق التطبيق وقتًا أطول للتشغيل.
يمكن لأي شخص أن يساعدني لإصلاح هذا.

شكرا لك مقدما.

gregjacobs أنا أستخدم webDriverProxy مع Perfecto أيضًا. كان يعمل بالنسبة لي لفترة من الزمن. بعد الترقية إلى 4.x أو 5.x ، لم أتمكن من تشغيله بعد الآن. هل ما زال يعمل من أجلك بعد الترقية؟

لا تعمل أي من خيارات الوكيل من https://github.com/angular/protractor/blob/master/lib/config.ts بالنسبة لي. أي شخص كان لديه الحظ تكوين الوكيل في V5؟

تضمين التغريدة
وكيل BrowserMob المنشأة والمنقلة مع هذه القدرات - يعمل بشكل جيد

  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 أحتاج إلى تحديد اسم مستخدم / كلمة مرور للوكيل الخاص بنا المستخدم في خاصية webDriverProxy . هل تعرف كيف؟

@ luker2 لسوء الحظ ، لست متأكدًا تمامًا ، ولكن هل webDriverProxy: 'http://username:[email protected]:8080' لا يعمل؟ (أين 8080 هو منفذ الوكيل الخاص بك؟)

gregjacobs نعم ، لم

بالنسبة للآخرين ، اضطررت أيضًا إلى عنوان url لتشفير اسم المستخدم: جزء

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

@ luker2 رائع ، سعيد لسماع أنك

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

vishalshivnath picture vishalshivnath  ·  3تعليقات

smarts picture smarts  ·  3تعليقات

nt3rp picture nt3rp  ·  3تعليقات

codef0rmer picture codef0rmer  ·  3تعليقات

gamecheck80 picture gamecheck80  ·  3تعليقات