Some pages change while we render them. A consent banner reloads the page, a single-page app re-renders a section, or a script you pass in the request clicks a link. Requests on these pages could fail with the internal_application_error error, even though nothing was wrong with the request. They now get a clearer result.
Selectors, clicks, and hovers
- Waiting for elements.
selectorandwait_for_selectortry once more, within the same timeout, when the page replaces the element they wait for. - Screenshots by selector. When the page replaces the element while the screenshot is taken, the API finds it again and takes the screenshot once more. If the element is still gone, you get the
selector_not_founderror instead of an internal error. - Clicks and hovers. An element that the page replaced is treated as not found. The
clickorhoveris skipped, or, witherror_on_click_selector_not_found=trueorerror_on_hover_selector_not_found=true, you getselector_not_found.
Scripts that load another page
If a script in the scripts option loads another page, for example, it clicks a link, submits a form, or goes back in history, you now get the script_triggers_redirect error. Before, these requests failed with an internal error or returned a screenshot of a page that was still loading.
To take a screenshot of the new page, add scripts_wait_until, for example, scripts_wait_until=load.
You don’t need it for changes within the page, like history.pushState() or a new hash. You also don’t need it for downloads and empty (204) responses that arrive within 2 seconds, since the browser doesn’t load another page.
Timeouts in request logs
Some requests that timed out showed internal_application_error in your request logs, although the API returned timeout_error. The logs now show timeout_error too.
As before, failed requests don’t count toward your quota. If you see an error you don’t expect, please contact support@screenshotone.com.


