Как я могу заставить Puppeteer зайти в мой аккаунт на Costco.com? - PullRequest
0 голосов
/ 01 октября 2019

Вот то, что я имею до сих пор, но я не понимаю, почему Costco.com продолжает сидеть там бесконечно долго. Клик для перехода в мой аккаунт никогда не загружает следующую страницу. Любые идеи о том, как я могу заставить кукловода ориентироваться на costcobusinessdelivery.com?

const puppeteer = require('puppeteer');
(async () => {
  const browser = await puppeteer.launch({headless: false})
  const page = await browser.newPage();
  await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36')
  await page.goto('https://www.costcobusinessdelivery.com');

  await page.click("#myaccount-t");

1 Ответ

0 голосов
/ 02 октября 2019

В этом случае вы можете попробовать несколько вещей:

  1. waitForSelector звучит так, как вам нужно:

    await page.waitForSelector (# myaccount-t "); await page.click (" # myaccount-t ");

waitForSelector

Просто подождите, пока не вернется один из API, после чего ваша кнопка станет доступной / кликабельной с помощью:

await page.waitForResponse ('https://costco.com/example'); await page.click ("# myaccount-t");

waitForResponse

Если нет, вы также можете убедиться, что он существует, а затем щелкнуть по нему:

const buttonExist = (дождаться страницы. $$ ("# myaccount-t")). Length! == 0;if (buttonExist) {await page.click ("# myaccount-t");};

$$

существовать будет равно true , если существует, и false , если нет.

...