---
title: "JSHandle | Grafana k6 documentation"
description: "Browser module: JSHandle Class"
---

> For a curated documentation index, see [llms.txt](/llms.txt). For the complete documentation index, see [llms-full.txt](/llms-full.txt).

# JSHandle

Represents a reference to a JavaScript object within the context of a webpage. This allows you to interact with JavaScript objects directly from your script.

> Caution
> 
> This API is a work in progress. Some of the following functionalities might behave unexpectedly.

## Supported APIs

Expand table

| Method                                                                                                    | Description                                                                                                                                                        |
|-----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [asElement()](/docs/k6/next/javascript-api/k6-browser/jshandle/aselement/)                                | Returns either `null` or the object handle itself, if the object handle is an instance of [ElementHandle](/docs/k6/next/javascript-api/k6-browser/elementhandle/). |
| [dispose()](/docs/k6/next/javascript-api/k6-browser/jshandle/dispose/)                                    | Stops referencing the element handle.                                                                                                                              |
| [evaluate(pageFunction\[, arg\])](/docs/k6/next/javascript-api/k6-browser/jshandle/evaluate/)             | Evaluates the `pageFunction` and returns its return value.                                                                                                         |
| [evaluateHandle(pageFunction\[, arg\])](/docs/k6/next/javascript-api/k6-browser/jshandle/evaluatehandle/) | Evaluates the `pageFunction` and returns a `JSHandle`.                                                                                                             |
| [getProperties()](/docs/k6/next/javascript-api/k6-browser/jshandle/getproperties/)                        | Fetches a map with own property names of of the `JSHandle` with their values as `JSHandle` instances.                                                              |
| [jsonValue()](/docs/k6/next/javascript-api/k6-browser/jshandle/jsonvalue/)                                | Fetches a JSON representation of the object.                                                                                                                       |

### Example

JavaScript ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```javascript
import { browser } from 'k6/browser';

export const options = {
  scenarios: {
    ui: {
      executor: 'shared-iterations',
      options: {
        browser: {
          type: 'chromium',
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  try {
    await page.goto('https://test.k6.io/');
    const jsHandle = await page.evaluateHandle(() => document.head);
    // ...
  } finally {
    await page.close();
  }
}
```
