如何使用NightmareJS 3.0.1从Option标记中同时选择innerText和值

问题描述 投票:0回答:1

我正在研究某些东西,发现我可以轻松地将两个返回的数组连接起来,但它不是很干。...您将如何处理?我需要选项文本和值,因为它们是不同的东西,但需要将它们返回到同一对象中,以便我可以使用返回的值进行工作……最好是如果我能以某种方式映射减少它,以便函数返回一个更好的键/值对象,但我不确定是否可能:

//define a new Nightmare method named "textExtract"
//note that it takes a selector as a parameter
Nightmare.action('textExtract', function(selector, done) {
    //`this` is the Nightmare instance
    this.evaluate_now((selector) => {
      //query the document for all elements that match `selector`
      //note that `document.querySelectorAll` returns a DOM list, not an array
      //as such, convert the result to an Array with `Array.from`
      //return the array result
      text =  Array.from(document.querySelectorAll(selector))
        //extract and return the text for each element matched
        .map((element) => element.text );
      elValues =  Array.from(document.querySelectorAll(selector))
        //extract and return the text for each element matched
        .map((element) => element.value );
        return text.concat(elValues)
    //pass done as the first argument, other arguments following
    }, done, selector)
  });

referenced from github。

nightmare
1个回答
0
投票

怎么样:

Nightmare.action('textExtract', function(selector, done) {
  this.evaluate_now((selector) => {
    return Array.from(document.querySelectorAll(selector))
      .map(o => ({value: o.value, text: o.text}))
  }, done, selector)
})

结果类似:

[
  { text: 'Bob', value: '766' },
  { text: 'Renee', value: '768' },
  { text: 'Paul', value: '787' }
]
© www.soinside.com 2019 - 2024. All rights reserved.