@@ -7,6 +7,7 @@ const firefoxOptions = {
77 product : 'firefox' ,
88} ;
99
10+ // Read csv file
1011const sites = [ ] ;
1112fs . createReadStream ( "sites.csv" )
1213 . pipe ( parse ( { delimiter : "," , from_line : 2 } ) )
@@ -17,12 +18,14 @@ fs.createReadStream("sites.csv")
1718 console . log ( error . message ) ;
1819 } ) ;
1920
20-
21+ // Crawling
2122( async ( ) => {
2223 const browser = await puppeteer . launch ( firefoxOptions ) ;
2324
2425 // Allow time to load the extension
2526 await new Promise ( resolve => setTimeout ( resolve , 60000 ) ) ;
27+
28+ // Timestamp
2629 const a = new Date ( ) ;
2730 console . log ( "Time: " , a . getTime ( ) ) ;
2831
@@ -38,53 +41,51 @@ fs.createReadStream("sites.csv")
3841 }
3942
4043 await new Promise ( resolve => setTimeout ( resolve , 15000 ) ) ;
44+
45+ /* Promise.race sets time limit for page.keyboard.down to resolve the issue that
46+ page.keyboard.down is never rejected or resolved on some sites */
4147
42- // To solve text box issue
43- try {
44- await Promise . race ( [ page . evaluate ( async ( ) => {
45- await document . activeElement . blur ( )
46- } ) , new Promise ( resolve => setTimeout ( resolve , 5000 ) ) ] ) ;
47- } catch { }
48-
49- await new Promise ( resolve => setTimeout ( resolve , 5000 ) ) ;
50-
48+ // Press shift+tab to solve text box issue
49+ await Promise . race ( [ page . keyboard . down ( 'Shift' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
50+ await Promise . race ( [ page . keyboard . down ( 'Tab' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
51+ await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
52+ await Promise . race ( [ page . keyboard . up ( 'Shift' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
53+ await Promise . race ( [ page . keyboard . up ( 'Tab' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
5154
52- // Promise.race sets time limit for page. keyboard.down to resolve the issue that page.keyboard.down is never rejected or resolved on some sites
55+ // Start analysis using keyboard shortcuts
5356 await Promise . race ( [ page . keyboard . down ( 'Shift' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
5457 await Promise . race ( [ page . keyboard . down ( 'Alt' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
5558 await Promise . race ( [ page . keyboard . down ( 'KeyA' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
5659 await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
57-
5860 await Promise . race ( [ page . keyboard . up ( 'Shift' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
5961 await Promise . race ( [ page . keyboard . up ( 'Alt' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
6062 await Promise . race ( [ page . keyboard . up ( 'KeyA' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
6163
6264 // Allow the site to load after analysis is triggered
63- await new Promise ( resolve => setTimeout ( resolve , 15000 ) ) ;
64-
65- try {
66- await Promise . race ( [ page . evaluate ( async ( ) => {
67- await document . activeElement . blur ( )
68- } ) , new Promise ( resolve => setTimeout ( resolve , 5000 ) ) ] ) ;
69- } catch { }
70-
71- await new Promise ( resolve => setTimeout ( resolve , 5000 ) ) ;
65+ await new Promise ( resolve => setTimeout ( resolve , 10000 ) ) ;
66+
67+ await Promise . race ( [ page . keyboard . down ( 'Shift' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
68+ await Promise . race ( [ page . keyboard . down ( 'Tab' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
69+ await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
70+ await Promise . race ( [ page . keyboard . up ( 'Shift' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
71+ await Promise . race ( [ page . keyboard . up ( 'Tab' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
7272
73+ // Stop analysis using keyboard shortcuts
7374 await Promise . race ( [ page . keyboard . down ( 'Shift' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
7475 await Promise . race ( [ page . keyboard . down ( 'Alt' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
7576 await Promise . race ( [ page . keyboard . down ( 'KeyS' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
7677 await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
77-
7878 await Promise . race ( [ page . keyboard . up ( 'Shift' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
7979 await Promise . race ( [ page . keyboard . up ( 'Alt' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
8080 await Promise . race ( [ page . keyboard . up ( 'KeyS' ) , new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ] ) ;
8181
8282 await new Promise ( resolve => setTimeout ( resolve , 5000 ) ) ;
8383
84+ // Close the page to resolve the issue that some sites do not allow redirecting
8485 await page . close ( ) ;
8586 console . log ( "testing done" ) ;
8687 }
8788 const d = new Date ( ) ;
8889 console . log ( "Time: " , d . getTime ( ) ) ;
8990 console . log ( "---------------- ALL TESTING DONE ----------------" ) ;
90- } ) ( ) ;
91+ } ) ( ) ;
0 commit comments