Skip to content

Commit 1d9c788

Browse files
author
George Griffiths
committed
experimental puppeteer engine
1 parent baf9638 commit 1d9c788

File tree

7 files changed

+257
-59
lines changed

7 files changed

+257
-59
lines changed

examples/puppeteer/clicking-elements.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
const puppeteer = require('puppeteer');
2-
const { queryHandler } = require("../../plugins/puppeteer");
2+
const { QueryHandler } = require("../../plugins/puppeteer");
33
(async () => {
44
try {
5-
puppeteer.__experimental_registerCustomQueryHandler('shadow', queryHandler);
5+
await puppeteer.__experimental_registerCustomQueryHandler('shadow', QueryHandler);
66
const browser = await puppeteer.launch({
77
headless: false,
88
devtools: true
99
})
1010
const page = await browser.newPage()
11-
await page.goto('http://127.0.0.1:5501/test/')
12-
11+
await page.goto('http://127.0.0.1:5500/test/')
1312

1413
// ensure btn exists and return it
14+
await page.waitForSelector("shadow/.btn-in-shadow-dom");
1515
const btn = await page.$("shadow/.btn-in-shadow-dom");
16-
console.log(btn);
1716
await btn.click();
1817
// check btn was clicked (this page expected btn to change text of output)
1918
const outputSpan = await page.$("shadow/.output");
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const { QueryHandler } = require("../../plugins/puppeteer");
2+
const puppeteer = require('puppeteer')
3+
4+
const main = async () => {
5+
await puppeteer.__experimental_registerCustomQueryHandler('shadow', QueryHandler);
6+
7+
const browser = await puppeteer.chromium.launch({ headless: false})
8+
const context = await browser.newContext({ viewport: null })
9+
const page = await context.newPage()
10+
11+
await page.goto('chrome://downloads')
12+
13+
const element = await page.waitForSelector('shadow/div', {timeout: 3000})
14+
const span = await element.$$("shadow/div > .illustration + span")
15+
console.log(span)
16+
await new Promise(resolve => setTimeout(resolve, 3000))
17+
18+
await page.close()
19+
await context.close()
20+
await browser.close()
21+
}
22+
23+
main()
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const puppeteer = require('puppeteer');
2+
const { QueryHandler } = require("../../plugins/puppeteer");
3+
(async () => {
4+
try {
5+
await puppeteer.__experimental_registerCustomQueryHandler('shadow', QueryHandler);
6+
const browser = await puppeteer.launch({
7+
headless: false
8+
})
9+
const page = await browser.newPage()
10+
await page.goto('http://127.0.0.1:5500/test/')
11+
await page.waitForSelector("shadow/.btn-in-shadow-dom")
12+
const elements = await page.$$("*");
13+
const elementsShadow = await page.$$("shadow/*");
14+
console.log("All Elements on Page Excluding Shadow Dom", elements.length);
15+
console.log("All Elements on Page Including Shadow Dom", elementsShadow.length);
16+
17+
await browser.close()
18+
19+
} catch (e) {
20+
console.error(e);
21+
}
22+
23+
})()

examples/puppeteer/typing-to-elements.js

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,20 @@
11
const puppeteer = require('puppeteer');
2-
const path = require('path');
3-
const fs = require('fs');
2+
const { QueryHandler } = require("../../plugins/puppeteer");
43
(async () => {
54
try {
5+
await puppeteer.__experimental_registerCustomQueryHandler('shadow', QueryHandler);
66
const browser = await puppeteer.launch({
77
headless: false
88
})
99
const page = await browser.newPage()
1010
await page.goto('http://127.0.0.1:5500/test/')
11-
// makes the library available in evaluate functions which run within the browser context
12-
await page.addScriptTag({
13-
path: path.join(__dirname, 'node_modules/query-selector-shadow-dom/dist/querySelectorShadowDom.js')
14-
});
1511

12+
const inputElement = await page.waitForSelector("shadow/#type-to-input");
1613

17-
// returns an https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#class-elementhandle
18-
const inputElement = (await page.waitForFunction(() => {
19-
return querySelectorShadowDom.querySelectorDeep("#type-to-input");
20-
})).asElement();
21-
22-
// https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#elementhandletypetext-options
2314
await inputElement.type("Typed text to input");
2415

2516
const value = await page.evaluate(inputElement => inputElement.value, inputElement);
26-
console.log(value);
17+
console.log("Value", value);
2718

2819
await browser.close()
2920

0 commit comments

Comments
 (0)