Javascript 木偶演员:在循环中输入和提交

Javascript 木偶演员:在循环中输入和提交,javascript,puppeteer,Javascript,Puppeteer,我正在尝试使用Puppeter从excel在网站上保存数据。首先单击页面上的添加按钮,它将导航到添加表单,然后从excel文件中提取数据。然后在每个输入字段中键入数据,单击保存。它将重定向到列表页。然后再次单击添加按钮 以下是我的部分代码: readExcel().then(async data => { //Read data from excel line by line for (let row = 1; row < 5; row++) {

我正在尝试使用Puppeter从excel在网站上保存数据。首先单击页面上的添加按钮,它将导航到添加表单,然后从excel文件中提取数据。然后在每个输入字段中键入数据,单击保存。它将重定向到列表页。然后再次单击添加按钮

以下是我的部分代码:

     readExcel().then(async data => {
       //Read data from excel line by line
       for (let row = 1; row < 5; row++) {
       let from = 'A' + row;
       let to = 'B' + row;
       //get Value1
       let fromValue = data[from].v;
       //get Value2
       let toValue = data[to].v;


       let addButton = await page.$('.action-links a');
       await addButton.click();
       await page.waitForNavigation({ waitUntil: 'domcontentloaded' 
       }).then(async () => {
       let fromUrl = await page.$('#edit-source');
       let toUrl = await page.$('#edit-redirect');
       let save = await page.$('#edit-submit');
       await fromUrl.type(fromValue);
       await toUrl.type(toValue);
       await save.click();
     });
    }
readExcel()。然后(异步数据=>{
//逐行从excel中读取数据
for(设行=1;行<5;行++){
let from='A'+行;
let to='B'+行;
//获取值1
让fromValue=数据[from].v;
//获得价值2
让toValue=data[to].v;
让addButton=等待页面。$('.action链接a');
等待添加按钮。单击();
wait page.waitForNavigation({waitUntil:'domcontentloaded'
})。然后(异步()=>{
让fromUrl=等待页面。$(“#编辑源”);
让toUrl=等待页面。$(“#编辑重定向”);
让保存=等待页面。$(“#编辑提交”);
等待fromUrl.type(fromValue);
等待行程类型(toValue);
等待保存。单击();
});
}
它只保存第一行数据。报告的错误:未经处理的PromisejectionWarning:错误:执行上下文被破坏,很可能是因为导航。
有人能帮我吗?

很可能是因为当您单击“保存”按钮时,下一个循环立即开始,而您的页面尚未加载。您需要等待,直到发现您的页面在提交后已完全加载。我想这是您的情况,但您需要提供问题的更多详细信息。