docs(dotnet): udpate existing examples (#6669)

This commit is contained in:
Pavel Feldman 2021-05-19 17:19:25 -07:00 committed by GitHub
parent ba637e6e41
commit fad77e2f78
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 110 additions and 79 deletions

View file

@ -71,7 +71,7 @@ class BrowserExamples
{
using var playwright = await Playwright.CreateAsync();
var firefox = playwright.Firefox;
var browser = await firefox.LaunchAsync(headless: false);
var browser = await firefox.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });
var page = await browser.NewPageAsync();
await page.GotoAsync("https://www.bing.com");
await browser.CloseAsync();

View file

@ -51,7 +51,7 @@ context.close()
```csharp
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Firefox.LaunchAsync(headless: false);
var browser = await playwright.Firefox.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });
// Create a new incognito browser context
var context = await browser.NewContextAsync();
// Create a new page inside context.
@ -132,9 +132,10 @@ print(page.evaluate("location.href"))
```
```csharp
var popupTask = context.WaitForPageAsync();
await page.ClickAsync("a");
var popup = await popupTask;
var popup = await context.RunAndWaitForEventAsync(BrowserContextEvent.Page, async =>
{
await page.ClickAsync("a");
});
Console.WriteLine(await popup.EvaluateAsync<string>("location.href"));
```
@ -269,7 +270,7 @@ browser_context.add_init_script(path="preload.js")
```
```csharp
await context.AddInitScriptAsync(scriptPath: "preload.js");
await context.AddInitScriptAsync(new BrowserContextAddInitScriptOptions { ScriptPath = "preload.js" });
```
:::note
@ -503,7 +504,7 @@ class Program
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Webkit.LaunchAsync(headless: false);
var browser = await playwright.Webkit.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });
var context = await browser.NewContextAsync();
await context.ExposeBindingAsync("pageURL", source => source.Page.Url);
@ -762,7 +763,7 @@ class BrowserContextExamples
public static async Task AddMd5FunctionToAllPagesInContext()
{
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Webkit.LaunchAsync(headless: false);
var browser = await playwright.Webkit.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });
var context = await browser.NewContextAsync();
// NOTE: md5 is inherently insecure, and we strongly discourage using

View file

@ -213,7 +213,9 @@ browser = playwright.chromium.launch( # or "firefox" or "webkit".
```
```csharp
var browser = await playwright.Chromium.LaunchAsync(ignoreDefaultArgs: new[] { "--mute-audio" })
var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions {
IgnoreDefaultArgs = new[] { "--mute-audio" }
})
```
> **Chromium-only** Playwright can also be used to control the Google Chrome or Microsoft Edge browsers, but it works best with the version of

View file

@ -49,9 +49,10 @@ path = download.path()
```
```csharp
var waitForDownloadTask = page.WaitForDownloadAsync();
await page.ClickAsync("#downloadButton");
var download = await waitForDownloadTask;
var download = await page.RunAndWaitForEventAsync(PageEvent.Download, async () =>
{
await page.ClickAsync("#downloadButton");
});
Console.WriteLine(await download.PathAsync());
```

View file

@ -78,7 +78,7 @@ class HandleExamples
public static async Task Run()
{
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync(headless: false);
var browser = await playwright.Chromium.LaunchAsync();
var page = await browser.NewPageAsync();
await page.GotoAsync("https://www.bing.com");
var handle = await page.QuerySelectorAsync("a");

View file

@ -30,9 +30,10 @@ file_chooser.set_files("myfile.pdf")
```
```csharp
var waitForFileChooserTask = page.WaitForFileChooserAsync();
await page.ClickAsync("upload");
var fileChooser = await waitForFileChooserTask;
var fileChooser = await page.RunAndWaitForEventAsync(Page.FileChooser, async () =>
{
await page.ClickAsync("upload");
});
await fileChooser.SetFilesAsync("temp.txt");
```

View file

@ -266,7 +266,7 @@ try {
// Crash might happen during a click.
await page.ClickAsync("button");
// Or while waiting for an event.
await page.WaitForPopupAsync(() -> {});
await page.WaitForEventAsync(PageEvent.Popup);
} catch (PlaywrightException e) {
// When the page crashes, exception message contains "crash".
}
@ -397,9 +397,10 @@ print(popup.evaluate("location.href"))
```
```csharp
var waitForPopupTask = page.WaitForPopupAsync();
await page.EvaluateAsync("() => window.open('https://microsoft.com')");
var popup = await waitForPopupTask;
var popup = await page.RunAndWaitForEventAsync(PageEvent.Popup, async () =>
{
await page.EvaluateAsync("() => window.open('https://microsoft.com')");
});
Console.WriteLine(await popup.EvaluateAsync<string>("location.href"));
```
@ -489,7 +490,7 @@ page.add_init_script(path="./preload.js")
```
```csharp
await page.AddInitScriptAsync(scriptPath: "./preload.js");
await page.AddInitScriptAsync(new PageAddInitScriptOption { ScriptPath = "./preload.js" });
```
:::note
@ -895,13 +896,13 @@ await page.EvaluateAsync("() => matchMedia('screen').matches");
await page.EvaluateAsync("() => matchMedia('print').matches");
// → false
await page.EmulateMediaAsync(Media.Print);
await page.EmulateMediaAsync(new PageEmulateMediaOptions { Media = Media.Print });
await page.EvaluateAsync("() => matchMedia('screen').matches");
// → false
await page.EvaluateAsync("() => matchMedia('print').matches");
// → true
await page.EmulateMediaAsync(Media.Screen);
await page.EmulateMediaAsync(new PageEmulateMediaOptions { Media = Media.Screen });
await page.EvaluateAsync("() => matchMedia('screen').matches");
// → true
await page.EvaluateAsync("() => matchMedia('print').matches");
@ -948,7 +949,7 @@ page.evaluate("matchMedia('(prefers-color-scheme: no-preference)').matches")
```
```csharp
await page.EmulateMediaAsync(colorScheme: ColorScheme.Dark);
await page.EmulateMediaAsync(new PageEmulateMediaOptions { ColorScheme = ColorScheme.Dark });
await page.EvaluateAsync("matchMedia('(prefers-color-scheme: dark)').matches");
// → true
await page.EvaluateAsync("matchMedia('(prefers-color-scheme: light)').matches");
@ -1403,7 +1404,10 @@ class PageExamples
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Webkit.LaunchAsync(headless: false);
await using var browser = await playwright.Webkit.LaunchAsync(new BrowserTypeLaunchOptions
{
Headless: false
});
var page = await browser.NewPageAsync();
await page.ExposeBindingAsync("pageUrl", (source) => source.Page.Url);
@ -1658,7 +1662,10 @@ class PageExamples
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Webkit.LaunchAsync(headless: false);
await using var browser = await playwright.Webkit.LaunchAsync(new BrowserTypeLaunchOptions
{
Headless: false
});
var page = await browser.NewPageAsync();
// NOTE: md5 is inherently insecure, and we strongly discourage using
@ -2056,8 +2063,8 @@ page.pdf(path="page.pdf")
```csharp
// Generates a PDF with 'screen' media type
await page.EmulateMediaAsync(Media.Screen);
await page.PdfAsync("page.pdf");
await page.EmulateMediaAsync(new PageEmulateMediaOptions { Media = Media.Screen });
await page.PdfAsync(new PagePdfOptions { Path = "page.pdf" });
```
The [`option: width`], [`option: height`], and [`option: margin`] options accept values labeled with units. Unlabeled
@ -2265,7 +2272,6 @@ browser.close()
```
```csharp
await using var browser = await playwright.Webkit.LaunchAsync(headless: false);
var page = await browser.NewPageAsync();
await page.GotoAsync("https://keycode.info");
await page.PressAsync("body", "A");
@ -2369,7 +2375,6 @@ browser.close()
```
```csharp
await using var browser = await playwright.Webkit.LaunchAsync();
var page = await browser.NewPageAsync();
await page.RouteAsync("**/*.{png,jpg,jpeg}", async r => await r.AbortAsync());
await page.GotoAsync("https://www.microsoft.com");
@ -2406,7 +2411,6 @@ browser.close()
```
```csharp
await using var browser = await playwright.Webkit.LaunchAsync();
var page = await browser.NewPageAsync();
await page.RouteAsync(new Regex("(\\.png$)|(\\.jpg$)"), async r => await r.AbortAsync());
await page.GotoAsync("https://www.microsoft.com");
@ -2454,7 +2458,7 @@ page.route("/api/**", handle_route)
await page.RouteAsync("/api/**", async r =>
{
if (r.Request.PostData.Contains("my-string"))
await r.FulfillAsync(body: "mocked-data");
await r.FulfillAsync(new RouteFulfillOptions { Body = "mocked-data" });
else
await r.ContinueAsync();
});
@ -2966,9 +2970,10 @@ frame = event_info.value
```
```csharp
var waitTask = page.WaitForEventAsync(PageEvent.FrameNavigated);
await page.ClickAsync("button");
var frame = await waitTask;
var frame = await page.RunAndWaitForEventAsync(PageEvent.FrameNavigated, async () =>
{
await page.ClickAsync("button");
}
```
### param: Page.waitForEvent.event = %%-wait-for-event-event-%%
@ -3195,9 +3200,10 @@ print(popup.title()) # popup is ready to use.
```
```csharp
var popupTask = page.WaitForPopupAsync();
await page.ClickAsync("button"); // click triggers the popup/
var popup = await popupTask;
var popup = await page.RunAndWaitForEventAsync(PageEvent.Popup, async () =>
{
await page.ClickAsync("button"); // click triggers the popup/
});
await popup.WaitForLoadStateAsync(LoadState.DOMContentLoaded);
Console.WriteLine(await popup.TitleAsync()); // popup is ready to use.
```

View file

@ -239,9 +239,10 @@ print(request.timing)
```
```csharp
var waitForEventTask = page.WaitForEventAsync(PageEvent.RequestFinished);
await page.GotoAsync("https://www.microsoft.com");
var request = await waitForEventTask;
var request = await page.RunAndWaitForEventAsync(PageEvent.RequestFinished, async () =>
{
await page.GotoAsync("https://www.microsoft.com");
});
Console.WriteLine(request.Timing.ResponseEnd);
```

View file

@ -178,7 +178,7 @@ page.route("**/xhr_endpoint", lambda route: route.fulfill(path="mock_data.json")
```
```csharp
await page.RouteAsync("**/xhr_endpoint", route => route.FulfillAsync(path: "mock_data.json"));
await page.RouteAsync("**/xhr_endpoint", route => route.FulfillAsync(new RouteFulfillOptions { Path = "mock_data.json" }));
```
### option: Route.fulfill.status

View file

@ -92,9 +92,10 @@ popup.value.goto("https://wikipedia.org")
```
```csharp
var waitForPopupTask = page.WaitForPopupAsync();
await page.EvaluateAsync("window.open()");
var popup = await waitForPopupTask;
var popup = await page.RunAndWaitForEventAsync(PageEvent.Popup, async =>
{
await page.EvaluateAsync("window.open()");
});
await popup.GotoAsync("https://wikipedia.org");
```

View file

@ -367,16 +367,16 @@ await page.ClickAsync("button#submit");
await page.DblClickAsync("#item");
// Right click
await page.ClickAsync("#item", button: MouseButton.Right);
await page.ClickAsync("#item", new PageClickOptions { Button = MouseButton.Right });
// Shift + click
await page.ClickAsync("#item", modifiers: new[] { KeyboardModifier.Shift });
await page.ClickAsync("#item", new PageClickOptions { Modifiers = new[] { KeyboardModifier.Shift } });
// Hover over element
await page.HoverAsync("#item");
// Click the top left corner
await page.ClickAsync("#item", position: new Position { X = 0, Y = 0 });
await page.ClickAsync("#item", new PageClickOptions { position = new Position { X = 0, Y = 0 } });
```
Under the hood, this and other pointer-related methods:
@ -409,7 +409,7 @@ page.click('button#submit', force=True)
```
```csharp
await page.ClickAsync("button#submit", force: true);
await page.ClickAsync("button#submit", new PageClickOptions { Force = true });
```
#### Programmatic click
@ -750,9 +750,10 @@ file_chooser.set_files("myfile.pdf")
```
```csharp
var waitForChooserTask = page.WaitForFileChooserAsync();
await page.ClickAsync("upload");
var fileChooser = await waitForChooserTask;
var fileChooser = page.RunAndWaitForAsync(PageEvent.FileChooser, async () =>
{
await page.ClickAsync("upload");
});
await fileChooser.SetFilesAsync("myfile.pdf");
```

View file

@ -47,7 +47,7 @@ class Example
await using var browser = await playwright.Chromium.LaunchAsync();
var page = await browser.NewPageAsync();
await page.GotoAsync("whatsmyuseragent.org");
await page.ScreenshotAsync(path: "screenshot.png");
await page.ScreenshotAsync(new PageScreenshotOptions { Path = "screenshot.png" });
}
}
```
@ -55,7 +55,7 @@ class Example
By default, Playwright runs the browsers in headless mode. To see the browser UI, pass the `headless: false` flag while launching the browser. You can also use [`option: slowMo`] to slow down execution. Learn more in the debugging tools [section](./debug.md).
```csharp
await playwright.Firefox.LaunchAsync(headless: false, slowMo: 50);
await playwright.Firefox.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false, SlowMo = 50 });
```
## Record scripts

View file

@ -209,10 +209,11 @@ print(new_page.title())
```csharp
// Get page after a specific action (e.g. clicking a link)
var waitForPageTask = context.WaitForPageAsync();
await page.ClickAsync("a[target='_blank']");
var newPage = await waitForPageTask;
await page.WaitForLoadStateAsync();
var newPage = await context.RunAndWaitForEventAsync(BrowserContextEvent.Page, async () =>
{
await page.ClickAsync("a[target='_blank']");
});
await newPage.WaitForLoadStateAsync();
Console.WriteLine(await newPage.TitleAsync());
```
@ -310,9 +311,10 @@ print(popup.title())
```csharp
// Get popup after a specific action (e.g., click)
var waitForPopupTask = page.WaitForPopupAsync();
await page.ClickAsync("#open");
var newPage = await waitForPopupTask;
var newPage = await page.RunAndWaitForEventAsync(PageEvent.Popup, async () =>
{
await page.ClickAsync("#open");
});
await newPage.WaitForLoadStateAsync();
Console.WriteLine(await newPage.TitleAsync());
```

View file

@ -89,7 +89,7 @@ page.goto("https://example.com", wait_until="networkidle")
```csharp
// Navigate and wait until network is idle
await page.GotoAsync("https://example.com", waitUntil: WaitUntilState.NetworkIdle);
await page.GotoAsync("https://example.com", new PageGotoOptions { WaitUntil = WaitUntilState.NetworkIdle });
```
### Wait for element
@ -394,7 +394,7 @@ with page.expect_navigation(url="**/login"):
// Running action in the callback of waitForNavigation prevents a race
// condition between clicking and waiting for a navigation.
await Task.WhenAll(
page.WaitForNavigationAsync("**/login"), // Waits for the next navigation
page.WaitForNavigationAsync(new PageWaitForNavigationOptions { UrlString = "**/login" }), // Waits for the next navigation
page.ClickAsync("a") // Triggers a navigation with a script redirect
);
```
@ -434,9 +434,10 @@ popup.wait_for_load_state("load")
```
```csharp
var waitForPopupTask = page.WaitForPopupAsync();
await page.ClickAsync("a[target='_blank']"); // Opens popup
var popup = await waitForPopupTask;
var popup = await page.RunAndWaitForEventAsync(PageEvent.Popup, async () =>
{
await page.ClickAsync("a[target='_blank']"); // Opens popup
});
popup.WaitForLoadStateAsync(LoadState.Load);
```

View file

@ -48,7 +48,7 @@ page.goto("https://example.com")
```
```csharp
using var context = await Browser.NewContextAsync(new BrowserContextOptions
using var context = await Browser.NewContextAsync(new BrowserNewContextOptions
{
HttpCredentials = new HttpCredentials
{
@ -113,7 +113,10 @@ var proxy = new Proxy
Username = "user",
Password = "pwd"
};
await using var browser = await BrowserType.LaunchAsync(proxy: proxy);
await using var browser = await BrowserType.LaunchAsync(new BrowserTypeLaunchOptions
{
Proxy = proxy
});
```
When specifying proxy for each context individually, you need to give Playwright
@ -148,8 +151,14 @@ context = browser.new_context(proxy={"server": "http://myproxy.com:3128"})
```csharp
var proxy = new Proxy { Server = "per-context" };
await using var browser = await BrowserType.LaunchAsync(proxy: proxy);
using var context = await Browser.NewContextAsync(proxy: new Proxy { Server = "http://myproxy.com:3128" });
await using var browser = await BrowserType.LaunchAsync(new BrowserTypeLaunchOptions
{
Proxy = proxy
});
using var context = await Browser.NewContextAsync(new BrowserNewContextOptions
{
Proxy = new Proxy { Server = "http://myproxy.com:3128" })
});
```
@ -502,7 +511,7 @@ page.route("**/*", lambda route: route.continue_(method="POST"))
await page.RouteAsync("**/*", async route => {
var headers = new Dictionary<string, string>(route.Request.Headers.ToDictionary(x => x.Key, x => x.Value));
headers.Remove("X-Secret");
await route.ContinueAsync(headers: headers);
await route.ContinueAsync(new RouteContinueOptions { Headers = headers });
});
// Continue requests as POST.

View file

@ -244,9 +244,10 @@ popup = popup_info.value
```
```csharp
var waitForPopupTask = page.WaitForPopupAsync();
await page.ClickAsync("#open");
var popup = await waitForPopupTask;
var popup = await page.RunAndWaitForEventAsync(PageEvent.Popup, async () =>
{
await page.ClickAsync("#open");
});
```
### API reference

View file

@ -33,7 +33,10 @@ context.close()
```
```csharp
var context = await browser.NewContextAsync(recordVideoDir: "videos/");
var context = await browser.NewContextAsync(new BrowserNewContextOptions
{
RecordVideoDir = "videos/"
});
// Make sure to close, so that videos are saved.
await context.CloseAsync();
```
@ -70,10 +73,11 @@ context = browser.new_context(
```
```csharp
var context = await browser.NewContextAsync(
recordVideoDir: "videos/",
recordVideoSize: new RecordVideoSize() { Width = 640, Height = 480 }
);
var context = await browser.NewContextAsync(new BrowserNewContextOptions
{
RecordVideoDir = "videos/",
RecordVideoSize = new RecordVideoSize() { Width = 640, Height = 480 }
});
// Make sure to close, so that videos are saved.
await context.CloseAsync();
```