问题标签 [nightmare]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
135 浏览

javascript - 无法使用 JS 输入值/单击页面上的某些内容

尝试自动化我在 Google Webmaster Tool 和 Google Adwords 上所做的一些重复性任务;在这两个地方,我都遇到了一点困难,需要帮助(顺便说一句,使用 Nightmare.js)

1)谷歌关键字工具:尝试使用JS为文本字段添加价值但无法实现;这正是发生的事情:http ://www.awesomescreenshot.com/image/60846/e8bc4231b7710ac2621aa134fa55b2cb 因为我无法使用 JS 输入值,所以单击按钮时出现以下错误:http://i. imgur.com/ExvxVnZ.png

2)谷歌网站管理员工具:我可以导航到首页和热门查询部分,但是当我尝试让 Nightmare 点击“下载此表”按钮时,它不起作用;尝试通过控制台做同样的事情并得到未定义:http ://www.awesomescreenshot.com/image/60927/78a5a98582f3c271d86ce0786db7210b

假设谷歌阻止这些行为通过 JS 发生,我对如何解决这个问题非常好奇

0 投票
1 回答
1753 浏览

javascript - PhantomJS 传递参数来评估

我有一个使用 NightmareJS 作为 PhantomJS 包装器的小型测试应用程序,我想测试元素上是否存在类。我有这个代码:

如何将参数传递给 querySelector 方法而不是对标签进行硬编码?

我试过了

但是 PhantomJS 总是返回一个错误,它找不到变量。

如何完成将变量参数传递给 querySelector 方法?

0 投票
1 回答
4332 浏览

node.js - Nightmare、PhantomJS 和提取页面数据

我是 Nightmare/PhantomJS 的新手,正在努力获取给定页面上所有标签的简单清单。在从源代码构建 PhantomJS 并手动安装 NodeJS、Nightmare 等之后,我在 Ubuntu 14.04 上运行,其他功能似乎按我的预期工作。

这是我正在使用的代码:

当我在“真实”浏览器中运行它时,我会得到页面上所有标签类型的列表(HTML、HEAD、BODY、...)。当我使用node GetTags.js运行它时,我只得到一行输出:

我确定这是一个新手问题,但是我在这里做错了什么?

0 投票
0 回答
1992 浏览

jquery - 幻影标准输出:TypeError:未定义不是构造函数(评估)

我使用nightmare (phantomjs wrapper) 来抓取网页,但出现错误:

幻影标准输出:TypeError:未定义不是构造函数(评估'$('a [href =“/dien-thoai/apple-iphone-6-plus-64gb-ban-quoc-te--pid975.html”]') .get(0).closest('section')')

单击后的页面屏幕短按预期正确。在浏览器的控制台中测试时,jquery 代码运行正常。所以我认为问题来自 phantomjs

0 投票
0 回答
566 浏览

javascript - 噩梦:调用评估动态次数来抓取动态分页的站点

我正在废弃一个动态分页的网站,页面是使用 js 加载的,无法通过 url 访问。

我需要从每一页中提取信息,将其打印到标准输出,转到下一页并重复该过程。

要加载页面,需要进行昂贵的设置过程。

在不重复设置的情况下执行此操作的最简单方法是使用递归函数作为运行回调,它检查是否有下一页以及它是否没有结束进程。

像这样的东西:

问题是在运行之后实例似乎处于松散状态。

如何一次提取一页信息,而不需要为每一页设置实例?

0 投票
1 回答
999 浏览

javascript - 在 Mac OS X 上运行缓慢

我目前正在学习如何使用NightmareJS。当我运行下面的代码时,我发现性能很慢。获得输出最多需要 30 秒。我做错什么了吗?

此外,我曾尝试使用wait()选择器,但这并没有太大帮助。

我不确定这是否与我的 Internet 连接有关,但是,使用 Google Chrome 打开相同的站点并执行相同的任务比使用Nightmare更快。

源代码

输出

下面列出了我当前的环境。

0 投票
2 回答
3570 浏览

javascript - 噩梦js浏览和解析多个站点

我正在尝试使用github.com/segmentio/nightmare自动化 2 个站点

例子:

  1. 我想去site_1(临时电子邮件服务)并收到一封电子邮件。
  2. 然后转到site_2并填写该电子邮件,然后提交表格。
  3. 然后转到site_1并检查电子邮件是否到达
  4. 解析电子邮件以获取激活链接
  5. 然后单击该链接并再次转到site_2

........... ETC

Nightmare js 和 node.js 是否适合这种浏览器操作?

因为在官方 API 上这样的简单事情是可以的:

复杂的事情呢? 谢谢

0 投票
1 回答
4591 浏览

javascript - 使用没有 ES6 语法的 Nightmare.js 和 yield

我使用 nightmare.js 构建了一个简单的节点脚本来抓取网站

我想在使用不支持 ES6 功能的旧版本节点的环境中运行它。github 页面上没有关于如何在没有“yield”关键字的情况下执行此操作的示例。

我确实在这里找到了一个没有 ES6 语法的用法示例:Webscraping with nightmare

我是这样写的:

它不会崩溃,但永远不会调用结果记录函数。

使用 yield 语法,从 "evaluate" 中获取返回值非常简单,但是没有它,我没有找到任何方法来做到这一点。

更新 感谢接受的答案及其评论。它使用“Q”并在 0.12 之前的节点版本中工作:

0 投票
1 回答
5224 浏览

node.js - 通过 Nightmare.js 在 linux 服务器上无头运行电子(atom-shell)

我正在构建一个抓取工具,以使 JS 单页应用程序易于抓取。

在对 PhantomJS (内存泄漏、过时的 webkit、不死进程以及许多其他问题)感到难以置信的挫败之后,我决定改用NightmareJS,它可以做同样的事情,但在后台使用Electron。Electron 有很多优点(使用最新的 chromium,速度要快得多),但它需要 X 服务器才能运行。

因为我需要让它在 ubuntu 服务器下工作,所以我遵循了这个 gist。现在我有一个很棒的 EC2 实例,一切都准备好运行无头电子

关键是我需要通过 nightmareJS 运行它(我将在 node.js 服务器脚本中使用它)。我想知道如何将参数传递给噩梦,以便通过 svfb 启动电子

0 投票
1 回答
3049 浏览

javascript - 噩梦测试 click() 选择器

我想获得对 DOM 元素的引用并单击它,但我不知道如何发现它。在 DOM 中会是这样的:

但是对于 Nightmare 函数 click 只接受一个参数 .click(selector)

. 问题是我不知道将 get(0) 放在哪里。有任何想法吗?