如何使用Puppeteer-Sharp在IFRAME内填写表单 [英] How to fill a form inside an iframe with Puppeteer-Sharp

查看:59
本文介绍了如何使用Puppeteer-Sharp在IFRAME内填写表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试用木偶夏普刮淘宝网站。

代码如下:

private static async Task SurfWithPuppeteer()
    {
        var options = new LaunchOptions{ Devtools  = true };

        Console.WriteLine("Downloading chromium");

        await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
        Console.WriteLine("Navigating to Hacker News");
        using (var browser = await Puppeteer.LaunchAsync(options))
        using (var page = await browser.NewPageAsync())
        {
            page.DefaultNavigationTimeout = 50000;
            await page.GoToAsync("https://login.tmall.com/?spm=875.7931836/B.a2226mz.1.66144265pHmhvt&redirectURL=https%3A%2F%2Fwww.tmall.com%2F");
            var frameElement= await page.QuerySelectorAsync("#J_loginIframe");
            //var frameElement = await page.QuerySelectorAsync("div#mallPage iframe");
            //var frameElement = await page.Frames.Select(f=>f.QuerySelectorAsync("#J_loginIframe")).FirstOrDefault();
            var frame = await frameElement.ContentFrameAsync();
            var frameContent = await frame.GetContentAsync();
            await frame.TypeAsync("#TPL_username_1", "compuwizpiyu");
            await frame.TypeAsync("#TPL_password_1", "Priyanka24$");
            var btn = await frame.QuerySelectorAsync("#J_SubmitStatic");

            await btn.ClickAsync();
            var res= await frame.WaitForNavigationAsync();
           var t=  await frame.GetContentAsync();
            //var url = page.Url;
        }
    }

但我无法导航到具有登录表单的框架(框架没有名称,只有src和id)。

我已尝试使用page.Frames检查框架,但由于iframe没有名称,因此很难找到我要查找的正确框架。 我还尝试了其他几个选项,例如:

var frameElement = await page.QuerySelectorAsync("div#mallPage iframe");
var frameElement = await page.Frames.Select(f=>f.QuerySelectorAsync("#J_loginIframe")).FirstOrDefault()

但仍无法获得所需的帧。请帮我解决这里的问题。

推荐答案

这可能是CORS造成的。

尝试以下代码。

var options = new LaunchOptions
{
    Devtools = true,
    Args = new[]
    {
        "--disable-web-security",
        "--disable-features=IsolateOrigins,site-per-process",
    },
};

这篇关于如何使用Puppeteer-Sharp在IFRAME内填写表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆