docs(dotnet): migrate to top-level style code snippets (#13559)

This commit is contained in:
Guriy Samarin 2022-04-19 21:23:26 +03:00 committed by GitHub
parent 0a401b2d86
commit cde7c5df44
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 147 additions and 218 deletions

View File

@ -63,20 +63,13 @@ with sync_playwright() as playwright:
```csharp ```csharp
using Microsoft.Playwright; using Microsoft.Playwright;
using System.Threading.Tasks;
class Program using var playwright = await Playwright.CreateAsync();
{ var firefox = playwright.Firefox;
public static async Task Main() var browser = await firefox.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });
{ var page = await browser.NewPageAsync();
using var playwright = await Playwright.CreateAsync(); await page.GotoAsync("https://www.bing.com");
var firefox = playwright.Firefox; await browser.CloseAsync();
var browser = await firefox.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });
var page = await browser.NewPageAsync();
await page.GotoAsync("https://www.bing.com");
await browser.CloseAsync();
}
}
``` ```
## event: Browser.disconnected ## event: Browser.disconnected

View File

@ -493,28 +493,21 @@ with sync_playwright() as playwright:
```csharp ```csharp
using Microsoft.Playwright; using Microsoft.Playwright;
using System.Threading.Tasks;
class Program using var playwright = await Playwright.CreateAsync();
{ var browser = await playwright.Webkit.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });
public static async Task Main() var context = await browser.NewContextAsync();
{
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Webkit.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });
var context = await browser.NewContextAsync();
await context.ExposeBindingAsync("pageURL", source => source.Page.Url); await context.ExposeBindingAsync("pageURL", source => source.Page.Url);
var page = await context.NewPageAsync(); var page = await context.NewPageAsync();
await page.SetContentAsync("<script>\n" + await page.SetContentAsync("<script>\n" +
" async function onClick() {\n" + " async function onClick() {\n" +
" document.querySelector('div').textContent = await window.pageURL();\n" + " document.querySelector('div').textContent = await window.pageURL();\n" +
" }\n" + " }\n" +
"</script>\n" + "</script>\n" +
"<button onclick=\"onClick()\">Click me</button>\n" + "<button onclick=\"onClick()\">Click me</button>\n" +
"<div></div>"); "<div></div>");
await page.ClickAsync("button"); await page.ClickAsync("button");
}
}
``` ```
An example of passing an element handle: An example of passing an element handle:

View File

@ -51,10 +51,10 @@ using System.Threading.Tasks;
using Microsoft.Playwright.NUnit; using Microsoft.Playwright.NUnit;
using NUnit.Framework; using NUnit.Framework;
namespace PlaywrightTests namespace PlaywrightTests;
public class ExampleTests : PageTest
{ {
public class ExampleTests : PageTest
{
[Test] [Test]
public async Task StatusBecomesSubmitted() public async Task StatusBecomesSubmitted()
{ {
@ -62,7 +62,6 @@ namespace PlaywrightTests
await Page.ClickAsync("#submit-button"); await Page.ClickAsync("#submit-button");
await Expect(Page.Locator(".status")).ToHaveTextAsync("Submitted"); await Expect(Page.Locator(".status")).ToHaveTextAsync("Submitted");
} }
}
} }
``` ```

View File

@ -53,10 +53,10 @@ using System.Threading.Tasks;
using Microsoft.Playwright.NUnit; using Microsoft.Playwright.NUnit;
using NUnit.Framework; using NUnit.Framework;
namespace PlaywrightTests namespace PlaywrightTests;
public class ExampleTests : PageTest
{ {
public class ExampleTests : PageTest
{
[Test] [Test]
public async Task NavigatetoLoginPage() public async Task NavigatetoLoginPage()
{ {
@ -64,7 +64,6 @@ namespace PlaywrightTests
await Page.ClickAsync("#login"); await Page.ClickAsync("#login");
await Expect(Page.Locator("div#foobar")).ToHaveURL(new Regex(".*/login")); await Expect(Page.Locator("div#foobar")).ToHaveURL(new Regex(".*/login"));
} }
}
} }
``` ```

View File

@ -52,16 +52,15 @@ using System.Threading.Tasks;
using Microsoft.Playwright.NUnit; using Microsoft.Playwright.NUnit;
using NUnit.Framework; using NUnit.Framework;
namespace Playwright.TestingHarnessTest.NUnit namespace Playwright.TestingHarnessTest.NUnit;
public class ExampleTests : PageTest
{ {
public class ExampleTests : PageTest
{
[Test] [Test]
public async Task StatusBecomesSubmitted() public async Task StatusBecomesSubmitted()
{ {
await Expect(Page.Locator(".status")).ToHaveTextAsync("Submitted"); await Expect(Page.Locator(".status")).ToHaveTextAsync("Submitted");
} }
}
} }
``` ```

View File

@ -78,25 +78,17 @@ public class TimeoutErrorExample {
``` ```
```csharp ```csharp
using System.Threading.Tasks;
using Microsoft.Playwright; using Microsoft.Playwright;
using System;
class Program using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync();
var page = await browser.NewPageAsync();
try
{ {
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync();
var page = await browser.NewPageAsync();
try
{
await page.ClickAsync("text=Example", new() { Timeout = 100 }); await page.ClickAsync("text=Example", new() { Timeout = 100 });
} }
catch (TimeoutException) catch (TimeoutException)
{ {
Console.WriteLine("Timeout!"); Console.WriteLine("Timeout!");
}
}
} }
``` ```

View File

@ -90,18 +90,11 @@ browser = playwright.chromium.launch(channel="chrome")
```csharp ```csharp
using Microsoft.Playwright; using Microsoft.Playwright;
using System.Threading.Tasks;
class Program using var playwright = await Playwright.CreateAsync();
{ var chromium = playwright.Chromium;
public static async Task Main() // Can be "msedge", "chrome-beta", "msedge-beta", "msedge-dev", etc.
{ var browser = await chromium.LaunchAsync(new BrowserTypeLaunchOptions { Channel = "chrome" });
using var playwright = await Playwright.CreateAsync();
var chromium = playwright.Chromium;
// Can be "msedge", "chrome-beta", "msedge-beta", "msedge-dev", etc.
var browser = await chromium.LaunchAsync(new BrowserTypeLaunchOptions { Channel = "chrome" });
}
}
``` ```
### When to use Google Chrome & Microsoft Edge and when not to? ### When to use Google Chrome & Microsoft Edge and when not to?

View File

@ -313,19 +313,12 @@ with sync_playwright() as p:
```csharp ```csharp
using Microsoft.Playwright; using Microsoft.Playwright;
using System.Threading.Tasks;
class Program using var playwright = await Playwright.CreateAsync();
await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
{ {
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
{
Headless = false Headless = false
}); });
}
}
``` ```
On Linux agents, headed execution requires [Xvfb](https://en.wikipedia.org/wiki/Xvfb) to be installed. Our [Docker image](./docker.md) and GitHub Action have Xvfb pre-installed. To run browsers in headed mode with Xvfb, add `xvfb-run` before the Node.js command. On Linux agents, headed execution requires [Xvfb](https://en.wikipedia.org/wiki/Xvfb) to be installed. Our [Docker image](./docker.md) and GitHub Action have Xvfb pre-installed. To run browsers in headed mode with Xvfb, add `xvfb-run` before the Node.js command.

View File

@ -255,26 +255,19 @@ with sync_playwright() as p:
```csharp ```csharp
using Microsoft.Playwright; using Microsoft.Playwright;
using System.Threading.Tasks;
class Program using var playwright = await Playwright.CreateAsync();
{ var chromium = playwright.Chromium;
public static async Task Main() // Make sure to run headed.
{ var browser = await chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });
using var playwright = await Playwright.CreateAsync();
var chromium = playwright.Chromium;
// Make sure to run headed.
var browser = await chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });
// Setup context however you like. // Setup context however you like.
var context = await browser.NewContextAsync(); // Pass any options var context = await browser.NewContextAsync(); // Pass any options
await context.RouteAsync('**/*', route => route.ContinueAsync()); await context.RouteAsync('**/*', route => route.ContinueAsync());
// Pause the page, and start recording manually. // Pause the page, and start recording manually.
var page = await context.NewPageAsync(); var page = await context.NewPageAsync();
await page.PauseAsync(); await page.PauseAsync();
}
}
``` ```
## Open pages ## Open pages

View File

@ -163,26 +163,19 @@ with sync_playwright() as p:
```csharp ```csharp
using Microsoft.Playwright; using Microsoft.Playwright;
using System.Threading.Tasks;
class Program using var playwright = await Playwright.CreateAsync();
{ var chromium = playwright.Chromium;
public static async Task Main() // Make sure to run headed.
{ var browser = await chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });
using var playwright = await Playwright.CreateAsync();
var chromium = playwright.Chromium;
// Make sure to run headed.
var browser = await chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });
// Setup context however you like. // Setup context however you like.
var context = await browser.NewContextAsync(); // Pass any options var context = await browser.NewContextAsync(); // Pass any options
await context.RouteAsync('**/*', route => route.ContinueAsync()); await context.RouteAsync('**/*', route => route.ContinueAsync());
// Pause the page, and start recording manually. // Pause the page, and start recording manually.
var page = await context.NewPageAsync(); var page = await context.NewPageAsync();
await page.PauseAsync(); await page.PauseAsync();
}
}
``` ```
## Emulate devices ## Emulate devices

View File

@ -30,19 +30,12 @@ Create a `Program.cs` that will navigate to `https://playwright.dev/dotnet` and
```csharp ```csharp
using Microsoft.Playwright; using Microsoft.Playwright;
using System.Threading.Tasks;
class Program using var playwright = await Playwright.CreateAsync();
{ await using var browser = await playwright.Chromium.LaunchAsync();
public static async Task Main() var page = await browser.NewPageAsync();
{ await page.GotoAsync("https://playwright.dev/dotnet");
using var playwright = await Playwright.CreateAsync(); await page.ScreenshotAsync(new PageScreenshotOptions { Path = "screenshot.png" });
await using var browser = await playwright.Chromium.LaunchAsync();
var page = await browser.NewPageAsync();
await page.GotoAsync("https://playwright.dev/dotnet");
await page.ScreenshotAsync(new PageScreenshotOptions { Path = "screenshot.png" });
}
}
``` ```
Now run it. Now run it.
@ -78,7 +71,7 @@ Install dependencies, build project and download necessary browsers. This is onl
dotnet add package Microsoft.Playwright.NUnit dotnet add package Microsoft.Playwright.NUnit
# Build the project # Build the project
dotnet build dotnet build
# Install required browsers # Install required browsers - replace netX with actual output folder name, f.ex. net6.0.
pwsh bin\Debug\netX\playwright.ps1 install pwsh bin\Debug\netX\playwright.ps1 install
``` ```
@ -88,11 +81,11 @@ using System.Threading.Tasks;
using Microsoft.Playwright.NUnit; using Microsoft.Playwright.NUnit;
using NUnit.Framework; using NUnit.Framework;
namespace PlaywrightTests namespace PlaywrightTests;
[Parallelizable(ParallelScope.Self)]
public class Tests : PageTest
{ {
[Parallelizable(ParallelScope.Self)]
public class Tests : PageTest
{
[Test] [Test]
public async Task ShouldAdd() public async Task ShouldAdd()
{ {
@ -106,7 +99,6 @@ namespace PlaywrightTests
int result = await Page.EvaluateAsync<int>("() => 7 * 3"); int result = await Page.EvaluateAsync<int>("() => 7 * 3");
Assert.AreEqual(21, result); Assert.AreEqual(21, result);
} }
}
} }
``` ```

View File

@ -244,20 +244,13 @@ with sync_playwright() as playwright:
```csharp ```csharp
using Microsoft.Playwright; using Microsoft.Playwright;
using System;
class Program using var playwright = await Playwright.CreateAsync();
{ await using var browser = await playwright.Chromium.LaunchAsync();
public static async Task Main() var page = await browser.NewPageAsync();
{ page.Request += (_, request) => Console.WriteLine(">> " + request.Method + " " + request.Url);
using var playwright = await Playwright.CreateAsync(); page.Response += (_, response) => Console.WriteLine("<< " + response.Status + " " + response.Url);
await using var browser = await playwright.Chromium.LaunchAsync(); await page.GotoAsync("https://example.com");
var page = await browser.NewPageAsync();
page.Request += (_, request) => Console.WriteLine(">> " + request.Method + " " + request.Url);
page.Response += (_, response) => Console.WriteLine("<< " + response.Status + " " + response.Url);
await page.GotoAsync("https://example.com");
}
}
``` ```
Or wait for a network response after the button click: Or wait for a network response after the button click:

View File

@ -103,10 +103,10 @@ class SearchPage:
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Playwright; using Microsoft.Playwright;
namespace BigEcommerceApp.Tests.Models namespace BigEcommerceApp.Tests.Models;
public class SearchPage
{ {
public class SearchPage
{
private readonly IPage _page; private readonly IPage _page;
private readonly ILocator _searchTermInput; private readonly ILocator _searchTermInput;
@ -126,7 +126,6 @@ namespace BigEcommerceApp.Tests.Models
await _searchTermInput.FillAsync(text); await _searchTermInput.FillAsync(text);
await _searchTermInput.PressAsync("Enter"); await _searchTermInput.PressAsync("Enter");
} }
}
} }
``` ```

View File

@ -52,16 +52,15 @@ using System.Threading.Tasks;
using Microsoft.Playwright.NUnit; using Microsoft.Playwright.NUnit;
using NUnit.Framework; using NUnit.Framework;
namespace Playwright.TestingHarnessTest.NUnit namespace Playwright.TestingHarnessTest.NUnit;
public class ExampleTests : PageTest
{ {
public class ExampleTests : PageTest
{
[Test] [Test]
public async Task StatusBecomesSubmitted() public async Task StatusBecomesSubmitted()
{ {
await Expect(Page.Locator(".status")).ToHaveTextAsync("Submitted"); await Expect(Page.Locator(".status")).ToHaveTextAsync("Submitted");
} }
}
} }
``` ```

View File

@ -34,11 +34,11 @@ using System.Threading.Tasks;
using Microsoft.Playwright.NUnit; using Microsoft.Playwright.NUnit;
using NUnit.Framework; using NUnit.Framework;
namespace PlaywrightTests namespace PlaywrightTests;
[Parallelizable(ParallelScope.Self)]
public class MyTest : PageTest
{ {
[Parallelizable(ParallelScope.Self)]
public class MyTest : PageTest
{
[Test] [Test]
public async Task ShouldAdd() public async Task ShouldAdd()
{ {
@ -52,7 +52,6 @@ namespace PlaywrightTests
int result = await Page.EvaluateAsync<int>("() => 7 * 3"); int result = await Page.EvaluateAsync<int>("() => 7 * 3");
Assert.AreEqual(21, result); Assert.AreEqual(21, result);
} }
}
} }
``` ```