首页 > 解决方案 > 有没有办法在 Nightmare 中访问 .then() 中的全局变量

问题描述

我有一个重复的功能,我想使用 NightmareJs 自动化。在这种情况下,任务是打开 google.com 并在搜索栏上输入搜索文本。站点地址和要搜索的文本都是从 JSON 文件提供的,我在全局范围内需要该文件。但是一旦我启动了一个 .then() 实例,我就无法从全局范围访问数据。如何从 .t​​hen() 实例下的全局范围访问数据?

到目前为止,我已经创建了一个 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"
    }
]

我希望能够从 Google 搜索栏上的 JSON 文件中插入搜索文本(在 searchText 下)。请指教。谢谢

PS:是的,我知道有一种更简单的方法可以通过更改我放置 .insert() 的位置来执行此操作,如下所示:

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

但是我想知道如何做到这一点以供将来参考,因为我以前曾多次遇到过这个问题。

标签: javascriptarraysnode.jsjsonnightmare

解决方案


推荐阅读