nightmare.js尝试根据锚文本点击链接

时间:2017-01-31 16:08:53

标签: node.js nightmare

我尝试使用噩梦,在节点js中根据链接锚文本中的文字点击链接。

以下是一些示例代码:

var Nightmare = require('nightmare');
var nightmare = Nightmare({show: true})

    nightmare
    .goto('https://www.wikipedia.org/')
    .inject('js', 'C:/users/myname/desktop/nodejs/node_modules/jquery/dist/jquery.js')
    .wait(500)
var selector = 'a';
nightmare
  .evaluate(function (selector) {
    // now we're executing inside the browser scope.
    return document.querySelector(selector).innerText;
   }, selector) // <-- that's how you pass parameters from Node scope to browser scope
  .end()
  .then(function(result) {
   console.log(result)
  })

我真的不清楚为什么所有标签的内部文本都没有返回?我想我可以在.evalution方法中做一个if语句,这样就可以限制链接被点击到&#34;英语&#34;例如。

知道如何根据链接文字点击链接吗?

1 个答案:

答案 0 :(得分:0)

据我所知,没有办法只根据它包含的内容选择DOM元素。您需要选择所有锚点(就像您现在正在做的那样)并根据1过滤到您想要的内容然后直接发出点击事件,或者您可以注入jQuery并使用[0-9]innerText发出点击。

此外,如果您想要所有来自代码的文字,您可能希望使用:contains

作为获取所有文本的示例:

$.click()