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('<organization-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('<organization-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()