【发布时间】:2021-08-10 17:09:07
【问题描述】:
首先,感谢您的宝贵时间。
我正在尝试制作 RPA,以检索网站中的一些报告。
基本上工作流程如下:
- 转到网页 >>
- 点击按钮跳转到第二页>>
- 单击按钮重定向到第三页 (asp.net SPA) >>
- 我需要点击几个按钮来提取我需要的报告,但所有这些点击都在应用程序的主页中 (url = "https://cav.receita.fazenda.gov.br/ecac/ #") >>
- 最后:点击按钮重定向到第四页(url = "https://cav.receita.fazenda.gov.br/ecac/Aplicacao.aspx?id=2&origem=menu")>>
直到这里都没有问题,我只需单击一个按钮即可下载 pdf 报告。
但问题是页面已完全加载到浏览器中,但我没有设法执行点击操作。
经过一些调试,我发现我为第 4 页获取的 page.content() 与第 3 页相同,但它们是完全不同的页面。换句话说,page.content() 没有更新到新的重定向页面。
因此,当我尝试执行单击时,由于元素不存在,它给了我一个错误,即没有找到与选择器匹配的错误。
要执行点击转到第 4 页,代码如下:
let beVisible = {
visible: true,
timeout: 0,
};
let consultPendencyBtn =
'#containerServicos271>.dontsplit>.lista-comum>.showTooltip:nth-child(3)>a';
await page.waitForSelector(consultPendencyBtn, beVisible);
await page.click(consultPendencyBtn);
当我尝试使用此代码获取浏览器页面时:
let browserPages = await browser.pages()
console.log(await browserPages[....].content())`
在索引 0 中我得到:
<html><head></head><body></body></html>
在索引 1 中,我得到了第 3 页 html,并且没有更多页面了。
我试图等待选择器,等到完全加载,等待 30000 毫秒的超时。 但即使页面已完全加载到浏览器中,我也无法使用 puppeteer 页面操作第 4 页。
打开第一页的代码:
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto(`https://cav.receita.fazenda.gov.br/autenticacao/login`);
你们有什么建议吗?
【问题讨论】:
标签: javascript node.js puppeteer