Instead of figuring out how to get inside the iFrame and typing, I would simplify the task by going directly to the IFrame URL.
https://warranty.goodmanmfg.com/registration/NewRegistration/NewRegistration.aspx?Sender=Goodman
Make your script directly go to the above URL and try to automate, it should work
Edit-1: Using Frames
Since a simple approach does not work for you, we do it with the frames themselves
Below is a simple script that should help you get started
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({headless: false}); const page = await browser.newPage(); await page.goto('http://www.goodmanmfg.com/product-registration', {timeout: 80000}); var frames = await page.frames(); var myframe = frames.find( f => f.url().indexOf("NewRegistration") > 0); const serialNumber = await myframe.$("#MainContent_SerNumText"); await serialNumber.type("12345"); await page.screenshot({path: 'example.png'}); await browser.close(); })();
Exit

Tarun lalwani
source share