The Browser class represents a browser instance running on a mobile device. It provides methods for managing pages (tabs) within the browser.
Page operations
browser.newPage()
Creates a new page (tab) in the browser.
browser . newPage (): Promise < Page >
Returns: Promise<Page> - New page instance
Example:
const browser = await client . launch ()
const page = await browser . newPage ()
await page . goto ( 'https://example.com' )
browser.pages()
Lists all pages currently open in the browser.
browser . pages (): Promise < Page [] >
Returns: Promise<Page[]> - Array of page instances
Example:
const pages = await browser . pages ()
console . log ( ` ${ pages . length } pages open` )
for ( const page of pages ) {
const url = await page . url ()
console . log ( 'Page URL:' , url )
}
Browser management
browser.close()
Closes the browser and all its pages.
browser . close (): Promise < void >
Returns: Promise<void>
Example:
await browser . close ()
console . log ( 'Browser closed' )
Always close browsers when done to free up device resources. Closing a browser automatically closes all its pages.
Properties
browser.handle
The unique handle identifier for this browser instance. Use this handle to reconnect to the browser later.
Example:
const browser = await client . launch ()
console . log ( 'Browser handle:' , browser . handle )
// Save handle for later reconnection
const handle = browser . handle
// Later, reconnect to the same browser
const sameBrowser = await client . connect ( handle )
Complete examples
Basic browser usage
const session = await uplink . session ( '<project-api-key>' , {
projectId: '<project-id>' ,
include: { ecdsa: true , ecdh: true }
})
const client = await uplink . client . fromSession ( session )
const browser = await client . launch ()
try {
// Create a page and navigate
const page = await browser . newPage ()
await page . goto ( 'https://example.com' )
console . log ( 'Page loaded successfully' )
await page . close ()
} finally {
// Always close the browser
await browser . close ()
}
Multiple pages
const browser = await client . launch ()
// Open multiple pages
const page1 = await browser . newPage ()
const page2 = await browser . newPage ()
const page3 = await browser . newPage ()
// Navigate in parallel
await Promise . all ([
page1 . goto ( 'https://example.com' ),
page2 . goto ( 'https://google.com' ),
page3 . goto ( 'https://github.com' )
])
// Get page titles
const titles = await Promise . all ([
page1 . evaluate (() => document . title ),
page2 . evaluate (() => document . title ),
page3 . evaluate (() => document . title )
])
console . log ( 'Page titles:' , titles )
// Close all pages
const pages = await browser . pages ()
await Promise . all ( pages . map ( p => p . close ()))
await browser . close ()
Switching between pages
const browser = await client . launch ()
const page1 = await browser . newPage ()
const page2 = await browser . newPage ()
await page1 . goto ( 'https://example.com' )
await page2 . goto ( 'https://google.com' )
// Show page1 (bring to foreground)
await page1 . show ()
console . log ( 'Showing page 1' )
// Wait a bit
await new Promise ( resolve => setTimeout ( resolve , 2000 ))
await page1 . hide ()
// Switch to page2
await page2 . show ()
console . log ( 'Showing page 2' )
await browser . close ()
Browser reconnection
const session = await uplink . session ( '<project-api-key>' , {
projectId: '<project-id>' ,
include: { ecdsa: true , ecdh: true }
})
const client = await uplink . client . fromSession ( session )
// Launch and save handle
const browser = await client . launch ()
const handle = browser . handle
console . log ( 'Browser handle:' , handle )
const page = await browser . newPage ()
await page . goto ( 'https://example.com' )
// Later, reconnect to the same browser
const reconnectedBrowser = await client . connect ( handle )
// Browser state is preserved
const pages = await reconnectedBrowser . pages ()
console . log ( `Reconnected browser has ${ pages . length } page(s)` )
const existingPage = pages [ 0 ]
const url = await existingPage . url ()
console . log ( 'Page still on:' , url )
await reconnectedBrowser . close ()
Page Page automation methods
ClientWorker Device-level browser operations
Core concepts Architecture overview