Ловля ошибок waitForSelector - PullRequest
0 голосов
/ 10 ноября 2018

Я использую модуль под названием Кукольник .

Я пытался дождаться селектора на моей странице, который может не отображаться. Из двух подходов, которые я выбрал, работал только метод try-catch.

блок try-catch - рабочий

try {
    await page.waitForSelector('.element');
    //element appeared
} catch (error) {
    //element did not appear
}

обещание цепочки - не работает

await page.waitForSelector('.element')
    .catch((error) => { 
        //element did not appear
    })
    .then(() => {
        //element appeared
    });

Кажется, что waitForSelector возвращает Promise, как указано в API, но я не могу понять, почему последний подход не сработал. Все равно выкинул ошибку.

Кто-нибудь сталкивался с такой же проблемой?

1 Ответ

0 голосов
/ 10 ноября 2018

Вы должны реструктурировать свой пример Promise Chaining, чтобы использовать метод then() перед методом catch().

Рассмотрите следующий пример, используя page.waitForSelector():

// Correct Method
await page.waitForSelector('#example').then(() => {
  console.log('SUCCESS');
}).catch(e => {
  console.log('FAIL');
});

Если элемент не существует, то FAIL будет зарегистрирован на консоли.В противном случае, если элемент существует, результат будет SUCCESS.

С другой стороны, взгляните на приведенный ниже пример, в котором then() и catch() в обратном порядке:

// Incorrect Method
await page.waitForSelector('#example').catch(e => {
  console.log('FAIL');
}).then(() => {
  console.log('SUCCESS - not necessarily');
});

Если элемент не существует, FAIL будет зарегистрирован в консоли, но независимо от того, существует элемент или нет, SUCCESS также будетзаписываться в консольЭто связано с тем, что регистрация SUCCESS является следующим непосредственным шагом в цепочке после попытки отловить ошибку.

Использование then() до catch() позволитраспечатать одно из двух сообщений и достичь желаемого результата.

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