2017-09-23 14 views
1

空のオブジェクトを返すquerySelectorAll、これはあなたが https://try-puppeteer.appspot.com/人形遣いのpage.evaluate私は人形遣いをしようとしています

問題でそれを実行することができますサンプルコードは、このコードは、空のオブジェクトの配列を返すされている

{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{} }、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{} {}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、 、{}、{}、{}、{}、{}、{}、{}]

私は間違い?

const browser = await puppeteer.launch(); 

const page = await browser.newPage(); 
await page.goto('https://reddit.com/'); 

let list = await page.evaluate(() => { 
      return Promise.resolve(Array.from(document.querySelectorAll('.title'))); 
     }); 
console.log(JSON.stringify(list)) 

await browser.close(); 

答えて

2

評価関数から返される値は、jsonシリアル化可能である必要があります。 https://github.com/GoogleChrome/puppeteer/issues/303#issuecomment-322919968

解決策は、要素からhref値を抽出して返します。

await this.page.evaluate((sel) => { 
     let elements = Array.from(document.querySelectorAll(sel)); 
     let links = elements.map(element => { 
      return element.href 
     }) 
     return links; 
    }, sel); 
関連する問題