Javascript 如何检查特定脚本元素是否与Puppeter异步或延迟
嗨,我试图找出哪个脚本使用Puppeter设置了异步 因此,我的想法是寻找具有特定src集的脚本标记,然后获取标记的完整html并在那里提取async 我是这样开始的Javascript 如何检查特定脚本元素是否与Puppeter异步或延迟,javascript,puppeteer,Javascript,Puppeteer,嗨,我试图找出哪个脚本使用Puppeter设置了异步 因此,我的想法是寻找具有特定src集的脚本标记,然后获取标记的完整html并在那里提取async 我是这样开始的 const pattern = 'script[src*="'+url+'"]' const text = await page.$(pattern); 但失败了。同样,这个脚本(thescript.js)也肯定在html中 const text = await page.$('script[src*="thescript.js
const pattern = 'script[src*="'+url+'"]'
const text = await page.$(pattern);
但失败了。同样,这个脚本(thescript.js)也肯定在html中
const text = await page.$('script[src*="thescript.js"]');
结果我得到了一些巨大的json,并进行了测试
text.innerText
test.innerHTML
但这些都是空的 作为一个更简单和“更木偶”的解决方案,您可以使用.getAttribute('src')
来识别您需要的脚本,然后等待页面.evaluate(el=>el.async,(等待页面.$$('script'))[i])
来检查它是异步的还是等待页面.evaluate(el=>el.defer,(等待页面.$$('script'))[i])
检查它是否是延迟
所有脚本迭代并检查其是否异步的示例:
const puppeter=require('puppeter')
异步函数fn(){
const browser=wait puppeter.launch()
const page=wait browser.newPage()
等待页面。转到('https://example-with-script-tags.com')
const scriptsOnPage=wait page.$$eval('script',el=>el.map(o=>o.getAttribute('src'))
for(scriptsOnPage.entries()的常量[i,src]{
const async=wait page.evaluate(el=>el.async,(wait page.$$('script'))[i])
log(src+'是异步的:'+async)
}
等待浏览器关闭()
}
fn()
输出:
fn1() is async: true
fn2() is async: true
fn3() is async: true
fn4() is async: false
您可以在Chrome devtools控制台选项卡中测试脚本,也可以使用:
第一个脚本:
fn1() is async: true
fn2() is async: true
fn3() is async: true
fn4() is async: false
$$('script')[0]。attributes.src
$$('script')[0]。异步
fn1() is async: true
fn2() is async: true
fn3() is async: true
fn4() is async: false
$$('script')[1]。attributes.src
$$('script')[1]。异步 等等
.getAttribute('src')
来识别你需要的脚本,然后等待页面。评估(el=>el.async,(等待页面。$$('script'))[i])
来检查它是异步的还是等待页面。评估(el=>el.defer,(等待页面。$$('script))[i])
检查它是否是延迟
所有脚本迭代并检查其是否异步的示例:
const puppeter=require('puppeter')
异步函数fn(){
const browser=wait puppeter.launch()
const page=wait browser.newPage()
等待页面。转到('https://example-with-script-tags.com')
const scriptsOnPage=wait page.$$eval('script',el=>el.map(o=>o.getAttribute('src'))
for(scriptsOnPage.entries()的常量[i,src]{
const async=wait page.evaluate(el=>el.async,(wait page.$$('script'))[i])
log(src+'是异步的:'+async)
}
等待浏览器关闭()
}
fn()
输出:
fn1() is async: true
fn2() is async: true
fn3() is async: true
fn4() is async: false
您可以在Chrome devtools控制台选项卡中测试脚本,也可以使用:
第一个脚本:
fn1() is async: true
fn2() is async: true
fn3() is async: true
fn4() is async: false
$$('script')[0]。attributes.src
$$('script')[0]。异步
fn1() is async: true
fn2() is async: true
fn3() is async: true
fn4() is async: false
$$('script')[1]。attributes.src
$$('script')[1]。异步 等等