the [selector](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors) to query for
</td></tr>
<tr><td>
pageFunction
</td><td>
Func \| string
</td><td>
the function to be evaluated in the page context. Will be passed the result of `Array.from(document.querySelectorAll(selector))` as its first argument.
</td></tr>
<tr><td>
args
</td><td>
Params
</td><td>
any additional arguments to pass through to `pageFunction`.
The result of calling `pageFunction`. If it returns an element it is wrapped in an [ElementHandle](./puppeteer.elementhandle.md), else the raw value itself is returned.
## Remarks
If `pageFunction` returns a promise `$$eval` will wait for the promise to resolve and then return its value.
If you are using TypeScript, you may have to provide an explicit type to the first argument of the `pageFunction`. By default it is typed as `Element[]`, but you may need to provide a more specific sub-type:
The compiler should be able to infer the return type from the `pageFunction` you provide. If it is unable to, you can use the generic type to tell the compiler what return type you expect from `$$eval`: