mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
docs(dotnet): migrate to top-level style code snippets (#13559)
This commit is contained in:
parent
0a401b2d86
commit
cde7c5df44
@ -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
|
||||||
|
@ -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:
|
||||||
|
@ -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");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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"));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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!");
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
@ -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?
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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:
|
||||||
|
@ -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");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user