Error on Goto function on playwright when navigate to PDF file

Viewed 796

I have this link https://nfse.blumenau.sc.gov.br/contrib/app/nfse/rel/rp_nfse_v23.aspx?s=61154301&e=00165960000101&f=2BED3D1E8 (if you try to access its gonna ask to solve a captcha but as long as i already have the session, the playwright doesnt need to worry it).

OUT page.goto: net::ERR_ABORTED at https://nfse.blumenau.sc.gov.br/contrib/app/nfse/rel/rp_nfse_v23.aspx?s=61154301&e=00165960000101&f=2BED3D1E8

Anybody knows why playwright cannot access it? I need to download the PDF Buffer of this link.

3 Answers

You can use the fetch API. Something like this:

const fetchResponse = browserContect.request.get('https://nfse.blumenau.sc.gov.br/contrib/app/nfse/rel/rp_nfse_v23.aspx?s=61154301&e=00165960000101&f=2BED3D1E8')
const pdfBuffer = await fetchResponse.body();

Found a Solution:

First i didnt concatenate the cookie on the calling of the function

const cook = 'ASP.NET_SessionId=' + cookie;    
await setCookie(cook, urlFinal);

Then i used the got module to put the cookie and get the buffer of the pdf:

response = await got(urlFinal, {cookieJar}).buffer();

Plus: Sometimes it returned a blank pdf (i think because of the timeout of loading it). So i inserted a loop to check the size of the buffer and tried 20 times until it gets more than 'X' of lenght.

for (let j = 0;j<=25;j++){
                                console.log('Entrei no looping ==> ' + j);
                                response = await got(urlFinal, {cookieJar}).buffer();
                                if (response.toString().length>=10000){
                                    j=21;
                                }
                            }
                            console.log('tamanho do buffer ==> ' + response.toString().length);

I tried that already but didnt work either:

const cookie = (await page.context().cookies()).filter(cookie => cookie.name === 'ASP.NET_SessionId')
                                               .map(cookie => cookie.value)[0];
console.log(cookie);
const cookieJar = new CookieJar();
const setCookie = promisify(cookieJar.setCookie.bind(cookieJar));

await setCookie('ASP.NET_SessionId=' + cookie, urlFinal);

const response = await got(urlFinal, {cookieJar}).buffer();

its really a challenge. Because if i wont go with page.goto i loose the session. The code bellow would solve the problem.

await page.goto(urlFinal);
Related