diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/index.js | 18 | 
1 files changed, 14 insertions, 4 deletions
| diff --git a/src/index.js b/src/index.js index 507085a..9dafdb4 100644 --- a/src/index.js +++ b/src/index.js @@ -6,6 +6,10 @@ const clickElementByXPath = (page, xPath) => page    .waitForXPath(xPath)    .then(item => item.click()); +const clickAndWait = (page, selector) => Promise.all([ +  page.click(selector), +  page.waitForNavigation(), +]);  const {    EDUFPMI_URL, @@ -14,7 +18,7 @@ const {    COURSE_URL  } = process.env; -puppeteer.launch({ headless: true }) +puppeteer.launch({ headless: false })    .then(async browser => {      const page = await browser.newPage(); @@ -22,12 +26,14 @@ puppeteer.launch({ headless: true })      await page.goto(EDUFPMI_URL, { waitUntil: 'networkidle0' });      await page.type('input#username', EDUFPMI_USERNAME);      await page.type('input#password', EDUFPMI_PASSWORD); -    await page.click('button#loginbtn'); -    await page.waitForResponse(response => response.url().includes('index.php')); +    await clickAndWait(page, 'button#loginbtn');      console.log(`Logged in as ${EDUFPMI_USERNAME}`); -    // Launch a meeting +    // Find the course      await page.goto(COURSE_URL, { waitUntil: 'networkidle0' }); +    await clickAndWait(page, 'li.bigbluebuttonbn'); + +    // Launch a meeting      const moodlePagePromise = new Promise(resolve => browser.on(        'targetcreated',        target => resolve(target.page()) @@ -35,6 +41,10 @@ puppeteer.launch({ headless: true })      await page.click('input#join_button_input');      const moodlePage = await moodlePagePromise; +    // Fill up the attendance +    await page.goBack(); +    await clickAndWait(page, 'li.attendance'); +      // Join as "Listen only"      await clickElementByXPath(moodlePage, '//span[contains(text(),"Listen only")]');      console.log('Joined the meeting'); | 
