Я пытаюсь настроить оператор if/else
в кукловоде, чтобы щелкнуть по кнопке, если она есть, или нажать другую кнопку.Я делаю что-то вроде этого:
if (document.querySelector('#buttonToClick') !== null) {
await page.waitForSelector('#buttonToClick');
await page.click('#buttonToClick');
}
else {
// first click #otherButton and then click #buttonToClick
await page.waitForSelector('#otherButton');
await page.click('#otherButton');
await page.waitForSelector('#buttonToClick');
await page.click('#buttonToClick');
}
По какой-то причине я продолжаю падать в блок else
, даже когда я иду к своей консоли Chrome и делаю document.querySelector('#buttonToClick') !==null
на нужной странице, и он показываетas true
ОБНОВЛЕНИЕ : мне кажется, что работает следующий код, но я не уверен, почему
await page.waitFor(3000);
if ((await page.$('#buttonToClick')) !== null) {
await page.click('#buttonToClick');
} else {
await page.waitForSelector('#otherButton');
await page.click('#otherButton');
await page.waitForSelector('#buttonToClick');
await page.click('#buttonToClick');
}`
Я подумал, что может быть что-тоделать со способом загрузки DOM, поэтому я попытался:
await page.waitForNavigation({waitUntil: 'domcontentloaded'})
// await page.waitFor(3000)
if ((await page.$('#buttonToClick')) !== null) {
await page.click('#buttonToClick');
} else {
await page.waitForSelector('#otherButton');
await page.click('#otherButton');
await page.waitForSelector('#buttonToClick');
await page.click('#buttonToClick');
}
Но это не сработало ... это работает только с await page.waitFor(30000)
до оператора if
... есть идеи, почему