首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Nightmare.js JavaScript转到()URL数组

如何使用Nightmare.js JavaScript转到()URL数组
EN

Stack Overflow用户
提问于 2017-11-22 09:57:26
回答 1查看 645关注 0票数 0

我得到了一个返回的URLs数组。如何循环数组并使用nightmaregoto()函数,转到每个URL并执行nightmare代码,然后关闭并执行下一个URL?

下面是我的代码:

代码语言:javascript
复制
var Nightmare = require('nightmare');
var vo = require('vo');

vo(function*() {
  var nightmare = Nightmare();
  var title = yield nightmare
    .goto('https://www.example.com/l/los_angeles-california')
    .inject('js', `node_modules/jquery/dist/jquery.js`)
    .evaluate(function() {
      var hrefs = [];
      $('.ItemsListCard').find('a').each(function() {
        hrefs.push($(this).attr('href'));
      });

      return hrefs //array of urls

      for (var i = 0; i < hrefs.length; i++) {
        nightmare.goto(hrefs[i].href)
          .wait(5000)
          .click('.ItemListingActionButtons')
          .type('.ThreadViewInput__input', 'Hey! ')
          .click('.ThreadViewInput__send')
      }

    });
  console.log(title);
  yield nightmare.end();

})(function(err, result) {
  if (err) return console.log(err);
});
EN

回答 1

Stack Overflow用户

发布于 2017-11-23 09:32:50

请注意,您要求Nightmare在浏览器上下文中执行(通过.execute())的代码与在nodejs中的控制器中运行的代码是不同的。您在这里的想法是正确的,但是在返回hrefs之后,迭代它们的其余代码应该在控制器中,如下所示:

代码语言:javascript
复制
const hrefs = yield nightmare
    .goto('https://www.example.com/l/los_angeles-california')
    .inject('js', `node_modules/jquery/dist/jquery.js`)
    .evaluate(function() {
      var hrefs = [];
      $('.ItemsListCard').find('a').each(function() {
        hrefs.push($(this).attr('href'));
      });

      return hrefs; //array of urls
    });
for (var i = 0; i < hrefs.length; i++) {
   yield nightmare.goto(hrefs[i].href)
     .wait(5000)
     .click('.ItemListingActionButtons')
     .type('.ThreadViewInput__input', 'Hey! ')
     .click('.ThreadViewInput__send');
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47425661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档