I have code that will login to a page, navigate to a list of messages, get the first message, and delete it. I need to be able to get the list of messages and delete each in turn. When I try to do that, I run into problems.
The site is rendered as plain html until the delete button is clicked. At this point, an iframe opens with the delete confirmation inside of it. If the confirmation is clicked, it returns me to the list of messages.
This is working until the iframe pops up. The existing code doesn't find the selector in the iframe. The code does work when it is not in a loop, though. So how can I interact with the iframe in the loop?
TimeoutError: Waiting for selector .navigation-footer button failed: Waiting failed: 30000ms exceeded
const messageList = await page.$$(".message-list tr");
for (message of messageList) {
    //get first message
    await page.click(".message-list tr");
    //wait for the message to load
    await page.waitForSelector(".circle-cross");
    //get time and message text
    const msgTime = await page.$eval("time", el => el.getAttribute("dateTime"));
    const paragraphs = await page.evaluate(() => {
        let paraElements = document.querySelectorAll(".bubble p");
        //array literal
        const paraList = [...paraElements];
        //gets the innerText of each element
        return paraList.map((el, index) => el.innerText);
    });
    //get author name
    await page.waitForSelector(".user p a")
    let authorLink = await page.$(".user p a")
    let authorName = await authorLink.evaluate(el => el.innerText.trim());
    
    //append message to messages.txt
    const stream = fs.createWriteStream("messages.txt", { flags: 'a' });
    stream.write(authorName + "\n");
    stream.write(msgTime + "\n");
    paragraphs.forEach((item, index) => {
        stream.write(item + "\n");
    });
    stream.end();
    //delete the message
    await page.click(".circle-cross");
    //handle the iframe verification
     const elementHandle = await page.waitForSelector("iframe.fancybox-iframe");
    const frame = await elementHandle.contentFrame();
    const button = await frame.waitForSelector(".navigation-footer button");
  await frame.click(".navigation-footer button");
    }
    
 
    