Кукловод, как сохранить / установить путь загрузки при загрузке из другой вкладки - PullRequest
0 голосов
/ 11 июня 2019

У меня есть случай, когда кукловод щелкает ссылку, которая вызывает загрузку, и в течение 2-3 секунд появляется новая вкладка, и файл загружается, и новая вкладка исчезает. В моем коде мне также нужно переключаться между окнами. но мой код ниже работает только тогда, когда загрузка вызывается из той же вкладки / окна.

 async function main() {
      const browser = await puppeteer.launch({ headless: false });
      const page = await browser.newPage();
      await page.setViewport({ width: 1366, height: 800 });
      await page.goto(endpoint, { waitUntil: "networkidle2", timeout: 0 });
      await page.waitFor(3000);

      await page.type("#username", login);
      await page.type("#password", pass);
      // click and wait for navigation

      await page.click("#login"),
        await page.waitForNavigation({ waitUntil: "networkidle2" });
      await page.waitFor(2000);

       const client = await page.target().createCDPSession();
  await client.send("Page.setDownloadBehavior", {
    behavior: "allow",
    downloadPath: path.resolve(__dirname, "reports/asd")
  });

      await page.waitForXPath('//*[@id="ctl00_ctl00_masterMain_cphMain_repViewable_ctl01_thisItemLink"]');

      const [setting] = await page.$x('//*[@id="ctl00_ctl00_masterMain_cphMain_repViewable_ctl01_thisItemLink"]');
      if (setting) setting.click();

      await page.waitFor(3000);

      let pages = await browser.pages();

      await page.waitFor(2000);

      await pages[2].waitForXPath('/html/body/table/tbody/tr[17]/td[6]/a');
      const [newVID] = await pages[2].$x('/html/body/table/tbody/tr[17]/td[6]/a');
      if (newVID) newVID.click();

     await pages[2].waitFor(3000)

     await pages[2].close()

     await pages[2].waitFor(5000)

     await pages[2].waitForXPath('//*[@id="freeze"]/table/tbody/tr[2]/td/table/tbody/tr[3]/td/a');
     const [neww] = await pages[2].$x('//*[@id="freeze"]/table/tbody/tr[2]/td/table/tbody/tr[3]/td/a');
     if (neww) neww.click();

    await pages[2].waitFor(4000)

    await pages[2].waitFor(4000)

    await pages[2].waitForXPath('/html/body/div/table/tbody/tr[3]/td/a');
    const [fin] = await pages[2].$x('/html/body/div/table/tbody/tr[3]/td/a');
    if (fin) fin.click();

    }

    main() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...