Я просмотрел прошлые проблемы, и, насколько мне известно, это не решено (эти проблемы кажутся похожими, но все они кажутся закрытыми):
Информация о версии:
Действия по воспроизведению:
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
и доступе к переменнойПолученные результаты:
Точка останова установлена в 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],
...
}
Я понимаю, почему это сбивает с толку, но на самом деле это работает так, как задумано. browser.debugger
приостанавливается за пределами области вашего it-блока, поэтому x, y и z фактически не должны быть определены.
Причина, по которой browser.debugger
заключается именно в том, что мы не хотим устанавливать точку останова внутри блока it - мы хотим установить ее в потоке управления между ними, когда команды выполняются.
Вы все еще можете использовать старый добрый debugger
и запускать с флагом --debug
чтобы фактически приостановить работу в блоке it.
Использование старого доброго отладчика и запуск транспортира с флагом --debug для меня вообще не приостанавливает выполнение. : - /
в чем же тогда смысл вышеупомянутого режима browser.debugger ()? Если не отлаживать тест ...
Самый полезный комментарий
в чем же тогда смысл вышеупомянутого режима browser.debugger ()? Если не отлаживать тест ...