Advertisement
darth-vader

dasas

Jan 14th, 2021
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.79 KB | None | 0 0
  1. const fs = require("fs");
  2. const newPage = require("./browser");
  3.  
  4. function delay(t = 1000) {
  5. return new Promise((r) => setTimeout(r, t));
  6. }
  7.  
  8. async function send(page, msg) {
  9. await page.waitForSelector("#richInput");
  10. await page.click("#richInput > div");
  11.  
  12. await delay(1000);
  13.  
  14. page.type("#richInput > div", msg);
  15. await delay(1000);
  16. await page.keyboard.press(String.fromCharCode(13));
  17. console.log("done");
  18. }
  19.  
  20. (async function sendMsg() {
  21. const page = await newPage();
  22. const cookiesString = fs.readFileSync("./zalo.json");
  23. const cookies = JSON.parse(cookiesString);
  24. await page.setCookie(...cookies);
  25. await page.goto("https://chat.zalo.me/");
  26.  
  27. console.log("Go zalo");
  28.  
  29. await delay(2000);
  30. await page.waitForSelector(".avatar");
  31. await delay(1000);
  32. await page.click(".avatar");
  33.  
  34. await delay(2000);
  35.  
  36. await page.waitForSelector(".msg-item");
  37.  
  38. await page.waitForSelector("#contact-search-input");
  39. await page.click("#contact-search-input");
  40. await page.type("#contact-search-input", "Dropshipping");
  41.  
  42. await delay(1000);
  43. await page.waitForSelector("#searchResultList");
  44. await page.click("#searchResultList .item");
  45.  
  46. await delay(1000);
  47.  
  48. // Expose a handler to the page
  49. await page.exposeFunction('onCustomEvent', async (data) => {
  50. console.log(`data ${data}`);
  51. await send(page, '[puppeteer] recieved.');
  52. });
  53.  
  54. await page.evaluate(async () => {
  55. var observeDOM = (function () {
  56. var MutationObserver =
  57. window.MutationObserver || window.WebKitMutationObserver;
  58.  
  59. return function (obj, callback) {
  60. if (!obj || obj.nodeType !== 1) return;
  61.  
  62. if (MutationObserver) {
  63. // define a new observer
  64. var mutationObserver = new MutationObserver(callback);
  65.  
  66. // have the observer observe foo for changes in children
  67. mutationObserver.observe(obj, { childList: true, subtree: true });
  68. return mutationObserver;
  69. }
  70.  
  71. // browser support fallback
  72. else if (window.addEventListener) {
  73. obj.addEventListener("DOMNodeInserted", callback, false);
  74. obj.addEventListener("DOMNodeRemoved", callback, false);
  75. }
  76. };
  77. })();
  78.  
  79. const el = document.getElementById("messageView");
  80. // Observe a specific DOM element:
  81. observeDOM(el, function (m) {
  82. var addedNodes = [],
  83. removedNodes = [];
  84.  
  85. m.forEach(
  86. (record) =>
  87. record.addedNodes.length & addedNodes.push(...record.addedNodes)
  88. );
  89.  
  90. m.forEach(
  91. (record) =>
  92. record.removedNodes.length & removedNodes.push(...record.removedNodes)
  93. );
  94.  
  95. if (addedNodes.length > 0)
  96. window.onCustomEvent({ status: 200 });
  97. });
  98. });
  99.  
  100. await delay(100000);
  101. page.close();
  102. })();
  103.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement