File tree Expand file tree Collapse file tree 7 files changed +264
-56
lines changed Expand file tree Collapse file tree 7 files changed +264
-56
lines changed Original file line number Diff line number Diff line change 1
1
const puppeteer = require ( 'puppeteer' ) ;
2
- const path = require ( 'path' ) ;
3
- const fs = require ( 'fs' ) ;
2
+ const { QueryHandler } = require ( "../../plugins/puppeteer" ) ;
4
3
( async ( ) => {
5
4
try {
5
+ await puppeteer . __experimental_registerCustomQueryHandler ( 'shadow' , QueryHandler ) ;
6
6
const browser = await puppeteer . launch ( {
7
- headless : false
7
+ headless : false ,
8
+ devtools : true
8
9
} )
9
10
const page = await browser . newPage ( )
10
11
await page . goto ( 'http://127.0.0.1:5500/test/' )
11
12
12
- // makes the library available in evaluate functions which run within the browser context
13
- await page . addScriptTag ( {
14
- path : path . join ( __dirname , 'node_modules/query-selector-shadow-dom/dist/querySelectorShadowDom.js' )
15
- } ) ;
16
-
17
-
18
13
// ensure btn exists and return it
19
- const btn = ( await page . waitForFunction ( ( ) => {
20
- const btn = querySelectorShadowDom . querySelectorDeep ( ".btn-in-shadow-dom" ) ;
21
- return btn ;
22
- } ) ) . asElement ( ) ;
14
+ await page . waitForSelector ( "shadow/.btn-in-shadow-dom" ) ;
15
+ const btn = await page . $ ( "shadow/.btn-in-shadow-dom" ) ;
23
16
await btn . click ( ) ;
24
17
// check btn was clicked (this page expected btn to change text of output)
25
- const outputSpan = await page . evaluateHandle ( ( ) => querySelectorShadowDom . querySelectorDeep ( " .output") ) ;
18
+ const outputSpan = await page . $ ( "shadow/ .output") ;
26
19
const text = await page . evaluate ( ( output ) => output . innerText , outputSpan ) ;
27
20
// prints the text from the output
28
21
console . log ( text ) ;
Original file line number Diff line number Diff line change
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 ( )
Original file line number Diff line number Diff line change
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
+ } ) ( )
Original file line number Diff line number Diff line change 1
1
const puppeteer = require ( 'puppeteer' ) ;
2
- const path = require ( 'path' ) ;
3
- const fs = require ( 'fs' ) ;
2
+ const { QueryHandler } = require ( "../../plugins/puppeteer" ) ;
4
3
( async ( ) => {
5
4
try {
5
+ await puppeteer . __experimental_registerCustomQueryHandler ( 'shadow' , QueryHandler ) ;
6
6
const browser = await puppeteer . launch ( {
7
7
headless : false
8
8
} )
9
9
const page = await browser . newPage ( )
10
10
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
- } ) ;
15
11
12
+ const inputElement = await page . waitForSelector ( "shadow/#type-to-input" ) ;
16
13
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
23
14
await inputElement . type ( "Typed text to input" ) ;
24
15
25
16
const value = await page . evaluate ( inputElement => inputElement . value , inputElement ) ;
26
- console . log ( value ) ;
17
+ console . log ( "Value" , value ) ;
27
18
28
19
await browser . close ( )
29
20
You can’t perform that action at this time.
0 commit comments