2021-01-07 11:46:05 -08:00
# class: Playwright
2021-01-14 07:48:56 -08:00
Playwright module provides a method to launch a browser instance. The following is a typical example of using Playwright
to drive automation:
2021-01-07 11:46:05 -08:00
```js
const { chromium, firefox, webkit } = require('playwright');
(async () => {
const browser = await chromium.launch(); // Or 'firefox' or 'webkit'.
const page = await browser.newPage();
await page.goto('http://example.com');
// other actions...
await browser.close();
})();
```
2021-02-25 22:03:39 -08:00
```java
import com.microsoft.playwright.*;
public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType chromium = playwright.chromium();
Browser browser = chromium.launch();
Page page = browser.newPage();
page.navigate("http://example.com");
// other actions...
browser.close();
}
}
}
```
2021-01-14 07:48:56 -08:00
```python async
import asyncio
from playwright.async_api import async_playwright
async def run(playwright):
chromium = playwright.chromium # or "firefox" or "webkit".
browser = await chromium.launch()
page = await browser.new_page()
await page.goto("http://example.com")
# other actions...
await browser.close()
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
```
```python sync
from playwright.sync_api import sync_playwright
def run(playwright):
chromium = playwright.chromium # or "firefox" or "webkit".
browser = chromium.launch()
page = browser.new_page()
page.goto("http://example.com")
# other actions...
browser.close()
with sync_playwright() as playwright:
run(playwright)
```
2021-05-13 19:19:14 +02:00
```csharp
using Microsoft.Playwright;
using System.Threading.Tasks;
class PlaywrightExample
{
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync();
var page = await browser.NewPageAsync();
2021-05-13 11:57:02 -07:00
await page.GotoAsync("https://www.microsoft.com");
2021-05-13 19:19:14 +02:00
// other actions...
}
}
```
2021-09-22 12:44:22 -07:00
## async method: Playwright._newRequest
* langs: js
- returns: < [FetchRequest]>
**experimental** Creates new instances of [FetchRequest].
### option: Playwright._newRequest.useragent = %%-context-option-useragent-%%
### option: Playwright._newRequest.extraHTTPHeaders = %%-context-option-extrahttpheaders-%%
### option: Playwright._newRequest.httpCredentials = %%-context-option-httpcredentials-%%
### option: Playwright._newRequest.proxy = %%-browser-option-proxy-%%
### option: Playwright._newRequest.timeout
- `timeout` < [float]>
Maximum time in milliseconds to wait for the response. Defaults to
`30000` (30 seconds). Pass `0` to disable timeout.
### option: Playwright._newRequest.ignoreHTTPSErrors = %%-context-option-ignorehttpserrors-%%
### option: Playwright._newRequest.baseURL
- `baseURL` < [string]>
When using [`method: FetchRequest.get` ], [`method: FetchRequest.post` ], [`method: FetchRequest.fetch` ] it takes the base URL in consideration by using the [`URL()` ](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL ) constructor for building the corresponding URL. Examples:
* baseURL: `http://localhost:3000` and sending rquest to `/bar.html` results in `http://localhost:3000/bar.html`
* baseURL: `http://localhost:3000/foo/` and sending rquest to `./bar.html` results in `http://localhost:3000/foo/bar.html`
2021-09-30 14:14:29 -07:00
### option: Playwright._newRequest.storageState
- `storageState` < [path]|[Object]>
- `cookies` < [Array]< [Object]>>
- `name` < [string]>
- `value` < [string]>
- `domain` < [string]>
- `path` < [string]>
- `expires` < [float]> Unix time in seconds.
- `httpOnly` < [boolean]>
- `secure` < [boolean]>
- `sameSite` < [SameSiteAttribute]< "Strict"|"Lax"|"None">>
- `origins` < [Array]< [Object]>>
- `origin` < [string]>
- `localStorage` < [Array]< [Object]>>
- `name` < [string]>
- `value` < [string]>
Populates context with given storage state. This option can be used to initialize context with logged-in information
obtained via [`method: BrowserContext.storageState` ] or [`method: FetchRequest.storageState` ]. Either a path to the
file with saved storage, or the value returned by one of [`method: BrowserContext.storageState` ] or
[`method: FetchRequest.storageState` ] methods.
2021-01-07 11:46:05 -08:00
## property: Playwright.chromium
- type: < [BrowserType]>
2021-04-02 09:47:14 +08:00
This object can be used to launch or connect to Chromium, returning instances of [Browser].
2021-01-07 11:46:05 -08:00
## property: Playwright.devices
2021-02-11 12:26:10 -08:00
* langs: js, python
2021-01-07 11:46:05 -08:00
- type: < [Object]>
2021-01-12 12:14:27 -08:00
Returns a dictionary of devices to be used with [`method: Browser.newContext` ] or [`method: Browser.newPage` ].
2021-01-07 11:46:05 -08:00
```js
const { webkit, devices } = require('playwright');
const iPhone = devices['iPhone 6'];
(async () => {
const browser = await webkit.launch();
const context = await browser.newContext({
...iPhone
});
const page = await context.newPage();
await page.goto('http://example.com');
// other actions...
await browser.close();
})();
```
2021-01-14 07:48:56 -08:00
```python async
import asyncio
from playwright.async_api import async_playwright
async def run(playwright):
webkit = playwright.webkit
iphone = playwright.devices["iPhone 6"]
browser = await webkit.launch()
context = await browser.new_context(**iphone)
page = await context.new_page()
await page.goto("http://example.com")
# other actions...
await browser.close()
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
```
```python sync
from playwright.sync_api import sync_playwright
def run(playwright):
webkit = playwright.webkit
iphone = playwright.devices["iPhone 6"]
browser = webkit.launch()
context = browser.new_context(**iphone)
page = context.new_page()
page.goto("http://example.com")
# other actions...
browser.close()
with sync_playwright() as playwright:
run(playwright)
```
2021-05-12 12:09:47 -03:00
## property: Playwright.devices
* langs: csharp
2021-05-18 23:33:52 -07:00
- type: < [IReadOnlyDictionary< string , BrowserNewContextOptions > ]>
2021-05-12 12:09:47 -03:00
Returns a dictionary of devices to be used with [`method: Browser.newContext` ] or [`method: Browser.newPage` ].
2021-05-13 19:19:14 +02:00
```csharp
using Microsoft.Playwright;
using System.Threading.Tasks;
class PlaywrightExample
{
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Webkit.LaunchAsync();
await using var context = await browser.NewContextAsync(Playwright.Devices["iPhone 6"]);
var page = await context.NewPageAsync();
2021-05-13 11:57:02 -07:00
await page.GotoAsync("https://www.theverge.com");
2021-05-13 19:19:14 +02:00
// other actions...
}
}
```
2021-01-07 11:46:05 -08:00
## property: Playwright.errors
2021-01-07 16:12:25 -08:00
* langs: js
2021-01-07 11:46:05 -08:00
- type: < [Object]>
- `TimeoutError` < [function]> A class of [TimeoutError].
2021-01-14 07:48:56 -08:00
Playwright methods might throw errors if they are unable to fulfill a request. For example,
[`method: Page.waitForSelector` ] might fail if the selector doesn't match any nodes during the given timeframe.
2021-01-07 11:46:05 -08:00
2021-01-14 07:48:56 -08:00
For certain types of errors Playwright uses specific error classes. These classes are available via
[`playwright.errors` ](#playwrighterrors ).
2021-01-07 11:46:05 -08:00
An example of handling a timeout error:
2021-01-14 07:48:56 -08:00
2021-01-07 11:46:05 -08:00
```js
try {
await page.waitForSelector('.foo');
} catch (e) {
if (e instanceof playwright.errors.TimeoutError) {
// Do something if this is a timeout.
}
}
```
2021-01-14 07:48:56 -08:00
```python async
try:
await page.wait_for_selector(".foo")
except TimeoutError as e:
# do something if this is a timeout.
```
```python sync
try:
page.wait_for_selector(".foo")
except TimeoutError as e:
# do something if this is a timeout.
```
2021-01-07 11:46:05 -08:00
## property: Playwright.firefox
- type: < [BrowserType]>
2021-04-02 09:47:14 +08:00
This object can be used to launch or connect to Firefox, returning instances of [Browser].
2021-01-07 11:46:05 -08:00
## property: Playwright.selectors
- type: < [Selectors]>
2021-01-14 07:48:56 -08:00
Selectors can be used to install custom selector engines. See
2021-01-21 14:35:20 -08:00
[Working with selectors ](./selectors.md ) for more information.
2021-01-07 11:46:05 -08:00
## property: Playwright.webkit
- type: < [BrowserType]>
2021-04-02 09:47:14 +08:00
This object can be used to launch or connect to WebKit, returning instances of [Browser].