javascript - 有没有办法在 Nightmare 中访问 .then() 中的全局变量
问题描述
我有一个重复的功能,我想使用 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"
}
]
我希望能够从 Google 搜索栏上的 JSON 文件中插入搜索文本(在 searchText 下)。请指教。谢谢
PS:是的,我知道有一种更简单的方法可以通过更改我放置 .insert() 的位置来执行此操作,如下所示:
nightmare
.goto(dummy[0].searchOn)
.insert('.gLFyf', dummy[0].searchText)
.then()
但是我想知道如何做到这一点以供将来参考,因为我以前曾多次遇到过这个问题。
解决方案
推荐阅读
- javascript - 在 FullCalendar v 4.0 中获取 BusinessHours
- django - Django-Channels:锁定类中的关键部分
- swift - RxSwift API 响应
- html - 如何使隐藏列表项中的链接可点击
- javascript - 输入类型编号上的编程选择()在 iOS 中不起作用
- python-3.x - 如何生成具有已知概率的随机数?
- java - 在 Linux 上的 Spring Boot 中使用 JNA 加载 .so 文件的问题
- javascript - Firebase 云功能在事务中创建文档并使用它来更新另一个文档
- java - 如何从 REST API 战争中访问主应用程序 WAR 中使用的远程 ejb
- java - 将自己的应用程序添加到 whatsapp 音频选择