Есть ли способ получить доступ к глобальным переменным внутри .then () в Nightmare - PullRequest
0 голосов
/ 25 декабря 2018

У меня есть повторяющаяся функция, которую я хотел бы автоматизировать с помощью NightmareJs.Задача, в данном случае, состоит в том, чтобы открыть google.com и ввести текст для поиска в строке поиска.Адрес сайта и текст для поиска предоставлены из файла JSON, который мне понадобился в глобальной области видимости.Но как только я запускаю экземпляр .then (), я не могу получить доступ к данным из глобальной области.Как получить доступ к данным из глобальной области видимости в экземпляре .then ()?

До сих пор я создал экземпляр Nightmare, который выглядит следующим образом:

Код NightmareJs:

var Nightmare = require('nightmare');
var nightmare = Nightmare({
    show:true
});
var dummy = require('./dummy.json')

nightmare
.goto(dummy[0].searchOn)
.evaluate(()=>{
    return document.querySelector('html').innerHTML
})
.then(()=>{
    return nightmare
    .insert('.gLFyf',dummy[0].searchText)
})

JSON-код:

[
    {
        "searchOn": "https://www.google.com",
        "searchText": "I love google"
    }
]

Я ожидал, что смогу вставить текст для поиска (под searchText) из файла JSON в строку поиска в Google.Пожалуйста, порекомендуйте.Спасибо

PS: Да, я понимаю, что есть более простой способ сделать это, изменив место размещения .insert () следующим образом:

nightmare
.goto(dummy[0].searchOn)
.insert('.gLFyf', dummy[0].searchText)
.then()

НоЯ хотел бы знать, как это сделать для дальнейшего использования, поскольку я сталкивался с этой проблемой несколько раз раньше.

...