亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

木偶師:登錄對話框中的訪問字段

木偶師:登錄對話框中的訪問字段

慕桂英546537 2022-09-29 15:25:44
我正在嘗試使用Node.js通過木偶/無頭瀏覽器從我們內部網中的頁面生成.pdf。從隨機頁面生成.pdf沒有問題,但是我正在為打開頁面時出現的登錄框架而苦苦掙扎。它看起來像這樣:我找不到訪問這兩個字段“堅果名稱”和“Passwort”以登錄的方法,因為Chrome的開發人員工具不會顯示字段名稱。打開此頁面時生成的.pdf文件或屏幕截圖始終顯示“未經授權”,就好像無頭瀏覽器在此對話框中按了Abbrechen(中止)一樣。到目前為止,我嘗試的是這樣的:const puppeteer = require('puppeteer');(async () => {    let url = 'http://intranet...../'    let browser = await puppeteer.launch()    let page = await browser.newPage()    await page.goto(url, {waitUntil: 'networkidle2' })    await page.type('#Nutzername', '....'); // Error here, because the identifier is wrong.    await page.keyboard.press("Tab");    await page.type('#Passwort', '....');    await page.type(String.fromCharCode(13)); // Enter    await page.pdf({        format:"A4",        path:'./Speiseplan.pdf',        displayHeaderFooter: false,        printBackground:true    })    process.exit()})();難道不能將木偶師與這些登錄對話框一起使用嗎?
查看完整描述

1 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

Chrome中的開發人員工具將無法掛鉤這些字段,因為它們不是DOM的一部分;它們是由 Chromium 本身在服務器上指示需要通過 HTTP 基本身份驗證進行身份驗證時本地生成的字段。

幸運的是,駐留在 DOM 和它生成的 Chromium 實例的本機層之上,并公開了 page.authenticate() 方法,用于處理此類情況。在導航到要求提供基本身份驗證憑據以設置要使用的用戶名/密碼對的頁面之前,請先進行呼叫:puppeteerpage.authenticate()

const puppeteer = require('puppeteer');


(async () => {

    let url = 'http://intranet...../'

    let browser = await puppeteer.launch()

    let page = await browser.newPage()

    await page.authenticate({'username':'YOUR_BASIC_AUTH_USERNAME', 'password': 'YOUR_BASIC_AUTH_PASSWORD'});

    await page.goto(url, {waitUntil: 'networkidle2' })


    await page.pdf({

        format:"A4",

        path:'./Speiseplan.pdf',

        displayHeaderFooter: false,

        printBackground:true

    })

    process.exit()

})();

索尼AK在 DEV.to 上有一篇簡短但甜蜜的文章,其中包含示例代碼來說明其用法。page.authenticate()



查看完整回答
反對 回復 2022-09-29
  • 1 回答
  • 0 關注
  • 83 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號