diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/attendConference.js | 5 | ||||
| -rw-r--r-- | src/index.js | 27 | ||||
| -rw-r--r-- | src/utils.js | 13 | 
3 files changed, 29 insertions, 16 deletions
| diff --git a/src/attendConference.js b/src/attendConference.js index b7f744f..80dc1c5 100644 --- a/src/attendConference.js +++ b/src/attendConference.js @@ -1,6 +1,5 @@ -const clickElementByXPath = (page, xPath) => page -  .waitForXPath(xPath) -  .then(item => item.click()); +const { clickElementByXPath } = require('./utils.js'); +  const attendConference = async page => {      // Join as "Listen only" diff --git a/src/index.js b/src/index.js index 1432923..5345587 100644 --- a/src/index.js +++ b/src/index.js @@ -1,12 +1,7 @@  require('dotenv').config();  const puppeteer = require('puppeteer');  const attendConference = require('./attendConference.js'); - - -const clickAndWait = (page, selector) => Promise.all([ -  page.click(selector), -  page.waitForNavigation(), -]); +const { clickElementBySelector } = require('./utils.js');  const {    EDUFPMI_URL, @@ -15,33 +10,39 @@ const {    COURSE_URL  } = process.env; -puppeteer.launch({ headless: false }) +puppeteer.launch({ headless: true })    .then(async browser => {      const page = await browser.newPage();      // Login -    await page.goto(EDUFPMI_URL, { waitUntil: 'networkidle0' }); +    await page.goto(EDUFPMI_URL, { waitUntil: 'domcontentloaded' });      await page.type('input#username', EDUFPMI_USERNAME);      await page.type('input#password', EDUFPMI_PASSWORD); -    await clickAndWait(page, 'button#loginbtn'); +    await Promise.all([ +      clickElementBySelector(page, 'button#loginbtn'), +      page.waitForNavigation() +    ]);      console.log(`Logged in as ${EDUFPMI_USERNAME}`);      // Find the course -    await page.goto(COURSE_URL, { waitUntil: 'networkidle0' }); -    await clickAndWait(page, 'li.bigbluebuttonbn'); +    await page.goto(COURSE_URL); +    await Promise.all([ +      clickElementBySelector(page, 'li.bigbluebuttonbn'), +      page.waitForNavigation() // Wait until the next page loads +    ]);      // Launch a meeting      const conferencePagePromise = new Promise(resolve => browser.on(        'targetcreated',        target => resolve(target.page())      )); -    await page.click('input#join_button_input'); +    await clickElementBySelector(page, 'input#join_button_input');      const conferencePage = await conferencePagePromise;      await attendConference(conferencePage);      // Fill up the attendance      await page.goBack(); -    await clickAndWait(page, 'li.attendance'); +    await clickElementBySelector(page, 'li.attendance');    })    .catch(e => console.log(e)); diff --git a/src/utils.js b/src/utils.js new file mode 100644 index 0000000..cf9fe38 --- /dev/null +++ b/src/utils.js @@ -0,0 +1,13 @@ +const clickElementByXPath = (page, xPath) => page +  .waitForXPath(xPath) +  .then(item => item.click()); + +const clickElementBySelector = (page, selector) => page +  .waitForSelector(selector) +  .then(item => item.click()); + + +module.exports = { +  clickElementByXPath, +  clickElementBySelector +}; | 
