Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const fs = require("fs");
- const newPage = require("./browser");
- function delay(t = 1000) {
- return new Promise((r) => setTimeout(r, t));
- }
- async function send(page, msg) {
- await page.waitForSelector("#richInput");
- await page.click("#richInput > div");
- await delay(1000);
- page.type("#richInput > div", msg);
- await delay(1000);
- await page.keyboard.press(String.fromCharCode(13));
- console.log("done");
- }
- (async function sendMsg() {
- const page = await newPage();
- const cookiesString = fs.readFileSync("./zalo.json");
- const cookies = JSON.parse(cookiesString);
- await page.setCookie(...cookies);
- await page.goto("https://chat.zalo.me/");
- console.log("Go zalo");
- await delay(2000);
- await page.waitForSelector(".avatar");
- await delay(1000);
- await page.click(".avatar");
- await delay(2000);
- await page.waitForSelector(".msg-item");
- await page.waitForSelector("#contact-search-input");
- await page.click("#contact-search-input");
- await page.type("#contact-search-input", "Dropshipping");
- await delay(1000);
- await page.waitForSelector("#searchResultList");
- await page.click("#searchResultList .item");
- await delay(1000);
- // Expose a handler to the page
- await page.exposeFunction('onCustomEvent', async (data) => {
- console.log(`data ${data}`);
- await send(page, '[puppeteer] recieved.');
- });
- await page.evaluate(async () => {
- var observeDOM = (function () {
- var MutationObserver =
- window.MutationObserver || window.WebKitMutationObserver;
- return function (obj, callback) {
- if (!obj || obj.nodeType !== 1) return;
- if (MutationObserver) {
- // define a new observer
- var mutationObserver = new MutationObserver(callback);
- // have the observer observe foo for changes in children
- mutationObserver.observe(obj, { childList: true, subtree: true });
- return mutationObserver;
- }
- // browser support fallback
- else if (window.addEventListener) {
- obj.addEventListener("DOMNodeInserted", callback, false);
- obj.addEventListener("DOMNodeRemoved", callback, false);
- }
- };
- })();
- const el = document.getElementById("messageView");
- // Observe a specific DOM element:
- observeDOM(el, function (m) {
- var addedNodes = [],
- removedNodes = [];
- m.forEach(
- (record) =>
- record.addedNodes.length & addedNodes.push(...record.addedNodes)
- );
- m.forEach(
- (record) =>
- record.removedNodes.length & removedNodes.push(...record.removedNodes)
- );
- if (addedNodes.length > 0)
- window.onCustomEvent({ status: 200 });
- });
- });
- await delay(100000);
- page.close();
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement