Skip to content

Commit 7badcbe

Browse files
authored
Updated final version of crawler (Issue-#10)
1 parent 7cf4db0 commit 7badcbe

File tree

1 file changed

+24
-23
lines changed

1 file changed

+24
-23
lines changed

Firefox-analysis-mode-crawler/crawler.js

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const firefoxOptions = {
77
product: 'firefox',
88
};
99

10+
// Read csv file
1011
const sites = [];
1112
fs.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

Comments
 (0)