Protractor: التصحيح لا يعمل في المنقلة

تم إنشاؤها على ١٤ أغسطس ٢٠١٤  ·  3تعليقات  ·  مصدر: angular/protractor

لقد ألقيت نظرة على المشكلات السابقة ، وعلى حد علمي ، لا يبدو أنه تمت معالجتها (تبدو هذه المشكلات متشابهة ، ولكن يبدو أنها جميعًا مغلقة):

  • # 907
  • # 552 (الذي يحتوي على مزيد من المناقشة حول المشكلة الموجودة على الرغم من إغلاقها)

معلومات الإصدار:

  • Mac 10.9.4
  • العقدة 0.10.30
  • منقلة 1.0.0
  • Coffeescript 1.7.1

خطوات التكاثر:

  • قم بإنشاء تكوين المنقلة التالي ( e2e.conf.coffee ):
    Copied from https://github.com/angular/protractor/blob/master/docs/referenceConf.js
    exports.config =
      seleniumServerJar: null
      seleniumPort: null
      seleniumArgs: []
      chromeOnly: true
      seleniumAddress: null
      sauceUser: null
      sauceKey: null
      sauceSeleniumAddress: null

      specs: ["e2e/*.coffee"]
      exclude: []
      capabilities:
        browserName: "chrome"
        count: 1
        shardTestFiles: false
        maxInstances: 1

      multiCapabilities: []
      maxSessions: -1
      baseUrl: "http://localhost:8081"
      rootElement: "body"
      allScriptsTimeout: 11000
      getPageTimeout: 10000
      framework: "jasmine"

      jasmineNodeOpts:
        isVerbose: true
        showColors: true
        includeStackTrace: true
        defaultTimeoutInterval: 30000
  • أنشئ المواصفات التالية e2e/spec.coffee
    describe 'Page', () ->
      it 'should debug properly', () ->
        browser.get '/'

        x = 'There is only X'
        y = 1
        z = ++y
        browser.debugger()
  • قم بتشغيل الأمر التالي: protractor debug e2e.conf.coffee

نتيجة متوقعة:

  • يتم تعيين نقطة الفاصل في الموقع الصحيح
  • يمكن الوصول إلى المتغيرات في النطاق المحلي عند إدخال وضع repl والوصول إلى متغير

النتائج:
تم تعيين Breakpoint في timers.js ، ولا يمكن الوصول إلى أي متغيرات في النطاق بخلاف browser :

protractor debug src/test/e2e.conf.coffee
Using ChromeDriver directly...
Hit SIGUSR1 - starting debugger agent.
debugger listening on port 5858
connecting... ok
break in timers.js:79
  77 }
  78
  79 function listOnTimeout() {
  80   var msecs = this.msecs;
  81   var list = this;
debug> repl
Press Ctrl + C to leave debug repl
> x
ReferenceError: x is not defined
> y
ReferenceError: y is not defined
> z
ReferenceError: z is not defined
> browser
{ controlFlow: [Function],
  schedule: [Function],
  getSession: [Function],
  getCapabilities: [Function],
  quit: [Function],
  ...
}
question

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

ما هو الهدف من وضع browser.debugger () أعلاه إذن؟ إذا لم يكن لتصحيح اختبارك ...

ال 3 كومينتر

أنا أفهم سبب الارتباك ، لكن هذا في الواقع يعمل على النحو المنشود. يتوقف browser.debugger مؤقتًا خارج نطاق كتلة it ، لذلك لا يُتوقع في الواقع تحديد x و y و z.

السبب في الكشف عن browser.debugger هو بالتحديد لأننا لا نريد تعيين نقطة توقف داخل الكتلة الخاصة به - نريد ضبطه على تدفق التحكم في المنتصف عند تنفيذ الأوامر.

لا يزال بإمكانك استخدام debugger القديم الجيد والتشغيل بعلامة --debug للتوقف فعليًا داخل الكتلة.

لا يؤدي استخدام مصحح أخطاء قديم جيد ومنقلة قيد التشغيل مع علامة --debug إلى إيقاف التنفيذ على الإطلاق. : - /

ما هو الهدف من وضع browser.debugger () أعلاه إذن؟ إذا لم يكن لتصحيح اختبارك ...

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