You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

3.3 KiB

Guide: Setting Up Playwright with a Local Chrome Executable

This guide explains how to configure Playwright to use a locally extracted Google Chrome browser. This is useful in environments where you don't have sudo permissions to install Chrome or its dependencies system-wide.

The Problem

When running a Playwright script, you might encounter an error like this:

playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at ...

This means Playwright cannot find the Chrome browser executable in its default search paths.

The Solution: Local Extraction

The solution is to download the Chrome .deb package, extract the executable, and then point your Playwright script to it.

Step 0: pip install playwright

Before you begin, make sure you have Playwright installed. You can install it using pip:

pip install playwright

Step 1: Download the Chrome .deb Package

You can download the latest stable version of Google Chrome for Debian/Ubuntu-based systems using wget:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

Step 2: Extract the Executable

Once you have the .deb file, you can extract its contents without installing it.

  1. Extract the .deb archive: The ar command extracts the contents of the .deb file.

    ar x google-chrome-stable_current_amd64.deb
    

    This will create several files, including data.tar.xz.

  2. Extract the data archive: The data.tar.xz file contains the actual program files.

    tar -xf data.tar.xz
    

    This will create an opt directory in your current location.

Step 3: Locate the Chrome Executable

The Chrome executable is now located at ./opt/google/chrome/chrome.

Step 4: Configure Your Playwright Script

In your Python script forum_functions.py, you need to tell Playwright where to find the Chrome executable by using the executable_path argument when launching the browser.

It is best practice to use an absolute path to avoid issues with the script's working directory. You can construct the absolute path by combining your project's root directory with the relative path to the executable.

Here is an example:

import os
from playwright.async_api import async_playwright
import asyncio

async def main():
    # Get the absolute path to the executable
    project_dir = os.getcwd() # Or specify your project's absolute path
    executable_path = os.path.join(project_dir, 'opt/google/chrome/chrome')

    async with async_playwright() as p:
        browser = await p.chromium.launch(
            executable_path=executable_path,
            args=['--headless=new', '--no-sandbox']
        )
        page = await browser.new_page()
        await page.goto('http://playwright.dev')
        print(await page.title())
        await browser.close()

if __name__ == '__main__':
    asyncio.run(main())

By providing the absolute executable_path, you are explicitly telling Playwright where to find the browser, making your script more robust.

Alternative: playwright install

If you have sudo permissions, the recommended way to install the browsers for Playwright is to use the following command:

playwright install --with-deps

This will download the browser and also install all the necessary system dependencies.