2017-10-26 1 views

Antwort

0

Die Leute werden Ihnen sagen, die Dinge nicht mit globalen Variablen zu tun. Ich denke, Sie möchten nur einige Daten in einem kleinen Skript speichern und verwenden. Es gibt mehrere Möglichkeiten, die Variable zur späteren Verwendung zu speichern. Ich werde vorerst nicht durch Datenbank und solche Sachen gehen.

Window-Objekt in der Albtraum-Instanz

Sie können seit Fenstern-Objekt verwenden, es wird da sein, solange Sie gleiche Seite und aktualisieren Sie die Seite nicht.

await nightmare 
.goto(url) 
.evaluate(() => { 
    window.aGlobalVariable = document.getElementById("element").textContent; 
}) 

und später später können Sie es später aufrufen, solange Sie in derselben Seite sind.

await nightmare 
.evaluate(() => { 
    console.log(`${aGlobalVariable} looks tasty`); 
}) 

Speichern und Leiten der Variable zwischen Kontexten

let aGlobalVariable; 
aGlobalVariable = await nightmare 
.goto(url) 
.evaluate(() => { 
    return document.getElementById("element").textContent; 
}) 

Jetzt können Sie aGlobalVariable vom NodeJS Kontext zuzugreifen. Wann immer Sie es wieder in nightmareJS möchten, können Sie es erneut an den Browser übergeben, wenn Sie möchten.

await nightmare 
.goto(url) 
.evaluate((aGlobalVariable) => { // <-- call it in the function 
    console.log(`${aGlobalVariable} looks tasty.`) 
}, aGlobalVariable) // <-- pass it here 

Stellen Sie sicher wissen über async und Versprechungen erwarten, sonst werden Sie seltsame Fehler am Ende immer, wenn diese Codes ausgeführt wird.

Hier sind einige Referenzen dafür.

+0

Vielen Dank! :) –

+0

@BertramSkarupa Wenn es funktioniert, wählen Sie es als Antwort, damit es nicht in unbeantworteten Suchen angezeigt wird. Ansonsten sag mir, was nicht funktioniert :) –

+0

Ich konnte es nicht funktionieren. Könnten Sie mir bitte ein kleines Beispielskript schicken, es würde sehr helfen! danke :) –

Verwandte Themen