page.$(selector)
означает , что вы хотите получить дескриптор первого элемента с указанным селектором, но вы не дали ему никакого селектора, поэтому он не будет работать.
Вместо этого вы можете получить дескриптор необходимого элемента:
const link = await page.$('.question-hyperlink');
Затем получите дескриптор необходимого свойства этого элемента и, наконец, его значение:
let valueHandle = await link.getProperty('textContent');
console.log(await valueHandle.jsonValue());
Более простое, более чистое решение
Вы можете page.$eval
выбрать желаемый селектор элемента и функцию, которая будет выполняться на элементе при его обнаружении.
const linkTitle = await page.$eval('.question-hyperlink', el => el.textContent);
console.log(linkTitle);