docs: add video and proxy docs (#5668)

This commit is contained in:
Pavel Feldman 2021-03-01 20:14:19 -08:00 committed by GitHub
parent 3b9d4f2b49
commit 19bd32f6c7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 119 additions and 39 deletions

View file

@ -50,6 +50,79 @@ page.goto("https://example.com")
### API reference
- [`method: Browser.newContext`]
## HTTP Proxy
You can configure pages to load over the HTTP(S) proxy or SOCKSv5. Proxy can be either set globally
for the entire browser, or for each browser context individually.
You can optionally specify username and password for HTTP(S) proxy, you can also specify hosts to
bypass proxy for.
Here is an example of a global proxy:
```js
const browser = await chromium.launch({
proxy: {
server: 'http://myproxy.com:3128',
user: 'usr',
password: 'pwd'
}
});
```
```java
Browser browser = chromium.launch(new BrowserType.LaunchOptions()
.withProxy(new Proxy("http://myproxy.com:3128")
.withUsername('usr')
.withPassword('pwd'));
```
```python async
browser = await chromium.launch(proxy={
"server": "http://myproxy.com:3128",
"user": "usr",
"password": "pwd"
})
```
```python sync
browser = chromium.launch(proxy={
"server": "http://myproxy.com:3128",
"user": "usr",
"password": "pwd"
})
```
When specifying proxy for each context individually, you need to give Playwright
a hint that proxy will be set. This is done via passing a non-empty proxy server
to the browser itself. Here is an example of a context-specific proxy:
```js
const browser = await chromium.launch({
proxy: { server: 'per-context' }
});
const context = await browser.newContext({
proxy: { server: 'http://myproxy.com:3128' }
})
```
```java
Browser browser = chromium.launch(new BrowserType.LaunchOptions()
.withProxy(new Proxy("per-context"));
BrowserContext context = chromium.launch(new Browser.NewContextOptions()
.withProxy(new Proxy("http://myproxy.com:3128"));
```
```python async
browser = await chromium.launch(proxy={"server": "per-context"})
context = await browser.new_context(proxy={"server": "http://myproxy.com:3128"})
```
```python sync
browser = chromium.launch(proxy={"server": "per-context"})
context = browser.new_context(proxy={"server": "http://myproxy.com:3128"})
```
## Network events
You can monitor all the requests and responses:

View file

@ -9,17 +9,32 @@ Playwright can record videos for all pages in a [browser context](./core-concept
upon context closure, so make sure to await [`method: BrowserContext.close`].
```js
// With browser.newContext()
const context = await browser.newContext({ recordVideo: { dir: 'videos/' } });
// Make sure to await close, so that videos are saved.
await context.close();
```
// With browser.newPage()
const page = await browser.newPage({ recordVideo: { dir: 'videos/' } });
// Make sure to await close, so that videos are saved.
await page.close();
```java
context = browser.newContext(new Browser.NewContextOptions().withRecordVideoDir(Paths.get("videos/")));
// Make sure to close, so that videos are saved.
context.close();
```
// [Optional] Specify video size; defaults to viewport size scaled down to fit 800x800
```python async
context = await browser.new_context(record_video_dir="videos/")
# Make sure to await close, so that videos are saved.
await context.close()
```
```python sync
context = browser.new_context(record_video_dir="videos/")
# Make sure to close, so that videos are saved.
context.close()
```
You can also specify video size, it defaults to viewport size scaled down to fit 800x800.
```js
const context = await browser.newContext({
recordVideo: {
dir: 'videos/',
@ -29,34 +44,12 @@ const context = await browser.newContext({
```
```java
// With browser.newContext()
context = browser.newContext(new Browser.NewContextOptions().withRecordVideoDir(Paths.get("videos/")));
// Make sure to close, so that videos are saved.
context.close();
// With browser.newPage()
Page page = browser.newPage(new Browser.NewPageOptions().withRecordVideoDir(Paths.get("videos/")));
// Make sure to close, so that videos are saved.
page.close();
// [Optional] Specify video size; defaults to viewport size scaled down to fit 800x800
BrowserContext context = browser.newContext(new Browser.NewContextOptions()
.withRecordVideoDir(Paths.get("videos/"))
.withRecordVideoSize(1024, 768));
```
```python async
# With browser.new_context()
context = await browser.new_context(record_video_dir="videos/")
# Make sure to await close, so that videos are saved.
await context.close()
# With browser.new_page()
page = await browser.new_page(record_video_dir="videos/")
# Make sure to await close, so that videos are saved.
await page.close()
# [Optional] specify video size; defaults to viewport size scaled down to fit 800x800
context = await browser.new_context(
record_video_dir="videos/",
record_video_size={"width": 1024, "height": 768}
@ -64,23 +57,37 @@ context = await browser.new_context(
```
```python sync
# With browser.new_context()
context = browser.new_context(record_video_dir="videos/")
# Make sure to close, so that videos are saved.
context.close()
# With browser.new_page()
page = browser.new_page(record_video_dir="videos/")
# Make sure to close, so that videos are saved.
page.close()
# [Optional] specify video size; defaults to viewport size scaled down to fit 800x800
context = browser.new_context(
record_video_dir="videos/",
record_video_size={"width": 1024, "height": 768}
)
```
Saved video files will appear in the specified folder. They all have generated unique names.
For the multi-page scenarios, you can access the video file associated with the page via the
[`method: Page.video`].
```js
const path = await page.video().path();
```
```java
path = page.video().path();
```
```python async
path = await page.video.path()
```
```python sync
path = page.video.path()
```
:::note
Note that the video is only available after the page or browser context is closed.
:::
### API reference
- [BrowserContext]
- [`method: Browser.newContext`]