each-list.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // 保存文件
  2. const fs = require('fs');
  3. const path = require('path');
  4. const webdriver = require('selenium-webdriver');
  5. const { pageInit } = require('./page-init');
  6. /**
  7. * 循环列表
  8. * @param { WebDriver } driver
  9. */
  10. function eachList(driver) {
  11. return new Promise(async (resolve, reject) => {
  12. // 等待页面加载
  13. await driver.wait(webdriver.until.elementLocated(webdriver.By.js(() => document.querySelectorAll('#J_ShopSearchResult .item4line1 .item'))));
  14. const index = 0;
  15. const listWindow = await driver.getWindowHandle();
  16. async function eachList(index) {
  17. let list = await driver.findElements(webdriver.By.js(() => document.querySelectorAll('#J_ShopSearchResult .item4line1 .item')));
  18. // 手动减去推荐(暂无其他办法)
  19. const endNum = list.length - 8;
  20. console.log(['获取list ok', endNum])
  21. const listItem = await list[index].findElement(webdriver.By.tagName('a'))
  22. const url = await listItem.getAttribute('href');
  23. // 等待新窗口或标签页
  24. await driver.switchTo().newWindow('tab');
  25. await driver.get(url);
  26. // 等待新标签页完成加载内容
  27. await driver.sleep(2000);
  28. await pageInit(driver);
  29. index++;
  30. if (index === endNum) {
  31. console.log('一个分类结束')
  32. resolve();
  33. } else {
  34. console.log(['\n\n', '开始', index + 1, '---------------------------------------------------------------------'])
  35. await driver.close();
  36. await driver.switchTo().window(listWindow);
  37. eachList(index);
  38. }
  39. }
  40. eachList(index);
  41. });
  42. }
  43. exports.eachList = eachList;