для повторного цикла нажмите на элемент Dom, не работающий в кукловоде - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть главная категория> подкатегория> элемент, чтобы выбрать случайный элемент, используя кукловода, которого я использую для цикла, но вторая итерация цикла for не работает ...

выдает ошибку типа введите изображениеописание здесь

 for (let i = 0; i < 3; i++) {
        this.menuCategoryLength = await page.$$eval(".menu-categories .slick-slide", div => div.length);
        this.categoryNo = Math.floor(Math.random() * this.menuCategoryLength) + 1;
        await page.click(".menu-categories .slick-slide:nth-child(" + this.categoryNo + ")", {delay: 200});

        await page.waitForSelector(".menu-subcategories");
        this.menuSubCategoryLength = await page.$$eval(".menu-subcategories .slick-slide", div => div.length);
        this.subCategoryNo = Math.floor(Math.random() * this.menuSubCategoryLength) + 1;
        await page.click(".menu-subcategories .slick-slide:nth-child(" + this.subCategoryNo + ")", {delay: 200});

        this.menuItem = await page.$(".menu-items .menu-item-wrap", {visible: true});

        if (this.menuItem) {
            this.menuItemLength = await page.$$eval(".menu-items .menu-item-wrap", div => div.length);
            this.max = this.menuItemLength > 1 && this.menuItemLength < 4 ? this.menuItemLength : 3;
            this.itemNo = this.menuItemLength === 1 ? 1 : Math.floor(Math.random() * this.max) + 1;
            await page.click(".menu-item-wrap:nth-child(" + this.itemNo + ")", {delay: 200});
        }
    }

1 Ответ

0 голосов
/ 14 декабря 2018
 (Math.floor(Math.random() * 0) + 1) === 1 //true

возможно, переменная this.menuCategoryLength равна 0, и ваш код пытается получить someSelector:nth-child(1)

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