使用 Puppeteer 时找不到帧 #
Frame # not found when using Puppeteer
我在使用 Puppeteer 时遇到问题,我正在尝试在 IFrame 中的文本框中键入内容。
我创建了一个带有代码片段的简单存储库,这个存储库包含一个带有来自 Twitter 的推文的 IFrame。
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);
var launchOptions = new LaunchOptions
{
Headless = false,
DefaultViewport = null
};
launchOptions.Args = new[] { "--disable-web-security", "--disable-features=IsolateOrigins,site-per-process" };
ChromeDriver = await Puppeteer.LaunchAsync(launchOptions);
page = await ChromeDriver.NewPageAsync();
await page.GoToAsync(Url, new NavigationOptions { WaitUntil = new WaitUntilNavigation[] { WaitUntilNavigation.Networkidle0 } });
var selectorIFrame = "#twitter_iframe";
var frameElement1 = await page.WaitForSelectorAsync(selectorIFrame);
var frame1 = await frameElement1.ContentFrameAsync();
var frameContent1 = await frame1.GetContentAsync();
var frame1 = await frameElement1.ContentFrameAsync();
失败并显示 Frame # not found
,请参阅下面的错误图片。
版本:
- PuppeteerSharp 7.0
- .Net Framework 6
- Git 例子
尝试禁用一些在launching puppeteer时可以禁用的安全功能。
检查 puppeteer chrome://flags/ 以防有东西阻止 iframe 访问,可能是不安全的内容,或者您可能必须明确隔离试验。
我的 2 美分,它应该允许它从不安全的地方访问它
Args = new[]
{
"--disable-web-security",
"--disable-features=IsolateOrigins,site-per-process,BlockInsecurePrivateNetworkRequests",
"--disable-site-isolation-trials"
}
我在使用 Puppeteer 时遇到问题,我正在尝试在 IFrame 中的文本框中键入内容。 我创建了一个带有代码片段的简单存储库,这个存储库包含一个带有来自 Twitter 的推文的 IFrame。
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);
var launchOptions = new LaunchOptions
{
Headless = false,
DefaultViewport = null
};
launchOptions.Args = new[] { "--disable-web-security", "--disable-features=IsolateOrigins,site-per-process" };
ChromeDriver = await Puppeteer.LaunchAsync(launchOptions);
page = await ChromeDriver.NewPageAsync();
await page.GoToAsync(Url, new NavigationOptions { WaitUntil = new WaitUntilNavigation[] { WaitUntilNavigation.Networkidle0 } });
var selectorIFrame = "#twitter_iframe";
var frameElement1 = await page.WaitForSelectorAsync(selectorIFrame);
var frame1 = await frameElement1.ContentFrameAsync();
var frameContent1 = await frame1.GetContentAsync();
var frame1 = await frameElement1.ContentFrameAsync();
失败并显示 Frame # not found
,请参阅下面的错误图片。
版本:
- PuppeteerSharp 7.0
- .Net Framework 6
- Git 例子
尝试禁用一些在launching puppeteer时可以禁用的安全功能。
检查 puppeteer chrome://flags/ 以防有东西阻止 iframe 访问,可能是不安全的内容,或者您可能必须明确隔离试验。
我的 2 美分,它应该允许它从不安全的地方访问它
Args = new[]
{
"--disable-web-security",
"--disable-features=IsolateOrigins,site-per-process,BlockInsecurePrivateNetworkRequests",
"--disable-site-isolation-trials"
}