由于 ESPN 不提供 API,因此我尝试使用 Puppeteer 来抓取有关我的 Fantasy Football League 的数据。但是,由于登录表单嵌套在 iframe 元素中,我很难尝试使用 puppeteer 登录。
我已经去了http://www.espn.com/login http://www.espn.com/login并选择 iframe。除了主要部分之外,我似乎无法选择 iframe 中的任何元素
frame.$('.main')
这是似乎通过登录表单获取 iframe 的代码。
const browser = await puppeteer.launch({headless:false});
const page = await browser.newPage();
await page.goto('http://www.espn.com/login')
await page.waitForSelector("iframe");
const elementHandle = await page.$('div#disneyid-wrapper iframe');
const frame = await elementHandle.contentFrame();
await browser.close()
我希望能够访问 iframe 元素中的用户名字段、密码字段和登录按钮。每当我尝试访问这些字段时,都会返回 null。
您可以使用 iframe 获取contentFrame
就像你现在所做的那样,然后打电话$
.
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto('http://www.espn.com/login')
const elementHandle = await page.waitForSelector('div#disneyid-wrapper iframe');
const frame = await elementHandle.contentFrame();
await frame.waitForSelector('[ng-model="vm.username"]');
const username = await frame.$('[ng-model="vm.username"]');
await username.type('foo');
await browser.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)