import { Page } from "https://deno.land/x/fresh@1.4.0/tests/deps.ts";
This method runs document.querySelector
within the page and passes the
result as the first argument to the pageFunction
.
Examples
Example 1
Example 1
const searchValue = await page.$eval('#search', el => el.value);
const preloadHref = await page.$eval('link[rel=preload]', el => el.href);
const html = await page.$eval('.main-container', el => el.outerHTML);
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:
Example 2
Example 2
// if you don't provide HTMLInputElement here, TS will error
// as `value` is not on `Element`
const searchValue = await page.$eval(
'#search',
(el: HTMLInputElement) => el.value
);
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
:
Example 3
Example 3
// The compiler can infer the return type in this case, but if it can't
// or if you want to be more explicit, provide it as the generic type.
const searchValue = await page.$eval<string>(
'#search',
(el: HTMLInputElement) => el.value
);