const switchToLatest = async () => { const waitForElements = async (els) => { return new Promise(async (resolve, reject) => { let counter = 0; while (true) { if (counter === 100) { return reject(); } for (let el of els) { if (document.querySelector(el)) { return resolve(els.map((el) => document.querySelector(el))); } } await new Promise((resolve, _reject) => requestAnimationFrame(resolve)); counter += 1; } }); }; const topTweetsOffSelector = '[aria-label="Top Tweets off"]'; const topTweetsOnSelector = '[aria-label="Top Tweets on"]'; const latestTweetsSelector = 'div[role="menuitem"]'; waitForElements([topTweetsOnSelector, topTweetsOffSelector]) .then((els) => { const [topTweetsOn, _topTweetsOff] = els; if (topTweetsOn) { topTweetsOn.click(); waitForElements([latestTweetsSelector]) .then((els) => { els.filter((el) => !!el).forEach((el) => el.click()); }) .catch(() => {}); } }) .catch(() => {}); }; switchToLatest();