Skip to content

Commit fbc3a3f

Browse files
authored
Frame/FrameManager and Page redirect fixes (#102)
Several bug fixes on Frame and FrameManager Fixed duplicated requests on Page
1 parent 5db4883 commit fbc3a3f

File tree

5 files changed

+46
-12
lines changed

5 files changed

+46
-12
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
using Xunit;
4+
5+
namespace PuppeteerSharp.Tests.Issues
6+
{
7+
[Collection("PuppeteerLoaderFixture collection")]
8+
public class Issue0100 : PuppeteerBaseTest
9+
{
10+
[Fact]
11+
public async Task PdfWundergroundShouldWork()
12+
{
13+
using (var page = await Browser.NewPageAsync())
14+
{
15+
var response = await page.GoToAsync("https://www.wunderground.com/weather/be/antwerp");
16+
var pdf = await page.PdfStreamAsync();
17+
Assert.NotNull(pdf);
18+
}
19+
}
20+
21+
[Fact]
22+
public async Task PdfDarkskyShouldWork()
23+
{
24+
using (var page = await Browser.NewPageAsync())
25+
{
26+
await page.GoToAsync("https://darksky.net/forecast/51.2211,4.3997/si12/en");
27+
var pdf = await page.PdfStreamAsync();
28+
Assert.NotNull(pdf);
29+
}
30+
}
31+
}
32+
}

lib/PuppeteerSharp.Tests/PuppeteerSharp.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
</ItemGroup>
1616
<ItemGroup>
1717
<Folder Include="Puppeteer\" />
18+
<Folder Include="Issues\" />
1819
</ItemGroup>
1920
<ItemGroup>
2021
<ProjectReference Include="..\PuppeteerSharp\PuppeteerSharp.csproj" />

lib/PuppeteerSharp/Frame.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ public class Frame
1010
private Session _client;
1111
private Page _page;
1212
private Frame _parentFrame;
13-
private string _id;
1413
private string _defaultContextId = "<not-initialized>";
1514
private object _context = null;
1615
private string _url = string.Empty;
@@ -22,7 +21,7 @@ public Frame(Session client, Page page, Frame parentFrame, string frameId)
2221
_client = client;
2322
_page = page;
2423
_parentFrame = parentFrame;
25-
_id = frameId;
24+
Id = frameId;
2625

2726
if (parentFrame != null)
2827
{

lib/PuppeteerSharp/FrameManager.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ void _client_MessageReceived(object sender, PuppeteerSharp.MessageEventArgs e)
4545
switch (e.MessageID)
4646
{
4747
case "Page.frameAttached":
48-
OnFrameAttached(e.MessageData.frameId.ToString(), e.MessageData.parentFrameId);
48+
OnFrameAttached(e.MessageData.frameId.ToString(), e.MessageData.parentFrameId.ToString());
4949
break;
5050

5151
case "Page.frameNavigated":
@@ -149,9 +149,9 @@ private void OnFrameNavigated(FramePayload framePayload)
149149
// Detach all child frames first.
150150
if (frame != null)
151151
{
152-
foreach (var child in frame.ChildFrames)
152+
while (frame.ChildFrames.Count > 0)
153153
{
154-
RemoveFramesRecursively(child);
154+
RemoveFramesRecursively(frame.ChildFrames[0]);
155155
}
156156
}
157157

@@ -195,9 +195,9 @@ private void RemoveContext(ExecutionContext context)
195195

196196
private void RemoveFramesRecursively(Frame frame)
197197
{
198-
foreach (var child in frame.ChildFrames)
198+
while (frame.ChildFrames.Count > 0)
199199
{
200-
RemoveFramesRecursively(child);
200+
RemoveFramesRecursively(frame.ChildFrames[0]);
201201
}
202202
frame.Detach();
203203
Frames.Remove(frame.Id);

lib/PuppeteerSharp/Page.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,12 @@ public async Task<dynamic> GoToAsync(string url, Dictionary<string, string> opti
272272
var requests = new Dictionary<string, Request>();
273273

274274
EventHandler<RequestEventArgs> createRequestEventListener = (object sender, RequestEventArgs e) =>
275-
requests.Add(e.Request.Url, e.Request);
275+
{
276+
if (!requests.ContainsKey(e.Request.Url))
277+
{
278+
requests.Add(e.Request.Url, e.Request);
279+
}
280+
};
276281

277282
_networkManager.RequestCreated += createRequestEventListener;
278283

@@ -679,22 +684,19 @@ private async Task OnCertificateError(MessageEventArgs e)
679684

680685
private void HandleException(string exceptionDetails)
681686
{
682-
throw new NotImplementedException();
683687
}
684688

685689
private void OnDialog(MessageEventArgs e)
686690
{
687-
throw new NotImplementedException();
688691
}
689692

690693
private void OnConsoleAPI(MessageEventArgs e)
691694
{
692-
throw new NotImplementedException();
693695
}
694696

695697
private Task ReloadAsync()
696698
{
697-
throw new NotImplementedException();
699+
return null;
698700
}
699701

700702

0 commit comments

Comments
 (0)