Ich habe mir frühere Probleme angesehen und nach meinem besten Wissen scheint es nicht angesprochen zu sein (diese Probleme scheinen ähnlich zu sein, aber alle scheinen geschlossen zu sein):
Versionsinformation:
Schritte zum Reproduzieren:
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
Erwartetes Ergebnis:
repl
wechseln und auf eine Variable zugreifenErgebnisse:
Der Haltepunkt ist auf timers.js
und kann auf keine anderen Variablen im Gültigkeitsbereich als browser
zugreifen:
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],
...
}
Ich verstehe, warum dies verwirrend ist, aber das funktioniert tatsächlich wie beabsichtigt. browser.debugger
pausiert außerhalb des Bereichs Ihres it-Blocks, sodass nicht erwartet wird, dass x, y und z definiert werden.
Der Grund, warum browser.debugger
verfügbar gemacht wird, liegt genau darin, dass wir keinen Haltepunkt innerhalb des it-Blocks setzen möchten - wir möchten ihn im Kontrollfluss dazwischen setzen, wenn die Befehle ausgeführt werden.
Sie können immer noch gute alte debugger
und mit dem Flag --debug
ausführen, um tatsächlich innerhalb des it-Blocks anzuhalten.
Die Verwendung eines guten alten Debuggers und das Ausführen eines Winkelmessers mit dem Flag --debug unterbricht die Ausführung für mich überhaupt nicht. : - /
Was zum Teufel bringt der obige browser.debugger () -Modus dann? Wenn Sie Ihren Test nicht debuggen möchten ...
Hilfreichster Kommentar
Was zum Teufel bringt der obige browser.debugger () -Modus dann? Wenn Sie Ihren Test nicht debuggen möchten ...