Ответы пользователя по тегу JavaScript
  • Как встроить puppeteer в node.js telegram bot?

    you_are_enot
    @you_are_enot
    Пограммист любитель
    Попробуй так

    const edua = require('./scrapper');
    
    bot.onText(/\/gr(.+)/, (msg, match) => {
        const chatId = msg.chat.id;
        const photo = 'grades.png';
    
        edua('login', 'password').then(() => {
            bot.sendPhoto(chatId, photo, { caption: ' ' });
        }).catch((err) => {
            console.log(err)
        });
    });


    const puppeteer = require('puppeteer');
    const eduEnu = 'https://edu.enu.kz/';
    const grades = 'https://edu.enu.kz/current_progress_gradebook_student';
    
    async function platonus(login, password) {
        const browser = await puppeteer.launch({ headless: false });
       const page = await platonus.browser.newPage();
       await page.setViewport({width: 1000, height: 500});
    
       await page.goto(eduEnu, { waitUntil: 'networkidle2' });
    
       await page.waitForSelector('input[name = "iin"]')
       await page.type('input[name = "iin"]', username, {delay: 1});
    
       await page.waitForSelector('input[name = "password"]')
       await page.type('input[name = "password"]', password, {delay: 1});
    
       const loginButton = await platonus.page.$x("//button[contains(text(), 'Кіру')]");
       await loginButton[0].click();
       await platonus.page.waitFor(5000);
    
       await page.goto(grades, { waitUntil: 'networkidle2' });
       await page.waitFor(2000);
       await page.screenshot({path: 'grades.png', fullPage: true});
    
       browser.close();
    };
    
    module.exports = platonus


    P.S. Использовать статические таймауты не особо хорошая идея. Лучше жди появления нужного элемента. Плюс, вместо waitUntil: 'networkidle2' при загрузке страницы лучше использовать domcontentloaded/
    Ответ написан
  • Как нажать Enter в Selenium?

    you_are_enot
    @you_are_enot Автор вопроса
    Пограммист любитель
    Решение оказалось проще, чем предполагалось. Достаточно в конце отправляемого сообщения добавить символ переноса строки "\n"
    Ответ написан
    Комментировать