هذه الصفحة غير متوفرة بلغتك بعد. أنت تقرأ النص الإنجليزي.
Knowledge base
Element not found and the other lines a step can print
Where the line is written
The run log gives each step one row: its name, its state and one line of detail. On a failed step that line is the reason.
Finished runs are kept on disk with their most recent rows.
A failed step does not end the run
The step after it runs anyway, and so does the next. The run walks to the end and reports only then.
At the end the profile is marked failed with a count of its broken steps. A run holding such a profile is failed as a whole.
Done means the steps were done
The lines and what to change
One sentence can come from several kinds of step.
| The line | What it means | What to change |
|---|---|---|
| The browser window is closed. | The tab the run was driving is gone. Checked before every step. | Look for a step that closes a tab, or a window closed by hand. |
| The URL is empty. | After substitution nothing usable was left. | Check the variable feeding it. Only web addresses and the blank page go through. |
| Navigation failed. | The browser did not load the address. | Open it by hand in that profile, then check the proxy. |
| The element did not appear in time. | A wait step polled until its own timeout and never saw the selector. | Raise the timeout, or wait for something the page shows earlier. |
| Element not found. | Click, input, scroll and extract look once and find nothing. | Put a wait before it. A blank selector reads the same way. |
| The key could not be sent. | The browser turned down the focus or the key press. | Click into the field first, then press the key. |
| The selector is empty. | A condition or a for-each step had no selector after substitution. | Fill the selector, or check the variable in it. |
| The URL pattern is empty. | A tab switched by address, or a wait for a request, with nothing to match. | Put a fragment of the address in the match field. |
| The code is empty. | The body of the JavaScript step came out blank. | Fill the body. A variable that gave nothing empties it too. |
| No matching request arrived in time. | Listening starts with the step, and nothing matched before the timeout. | Put the step before the click that causes the request. |
| Cookie not found. | The name field was blank, or this site has nothing under that name. | Fill the name and be on the site that owns the cookie. |
| No page is open in this tab. | No domain on the step and no web page in the tab. Clearing always needs the tab on a site. | Go to the site first, or fill the domain on the step. |
| Too many screenshots in one run (limit 100). | One profile went past the ceiling for a single run. A screenshot inside a repeat counts every pass. | Move the screenshot out of the repeat, or split the flow. |
| Tab not found. | Switching by number pointed past the open tabs, switching by address matched no open tab, or the tab being closed was already gone. | Check the number against the tabs open by then, and the address fragment against what they hold. |
| The cookie could not be saved. | The browser turned down the write. The same line covers a refused removal. | Check the domain and path on the step against the real cookie. |
| No new tab was available, so the current tab was used. | Not a failure. The step reads as done and the address loaded in the tab already open. | Nothing, unless a later step picks a tab by number: that one is now different. |
When the line means something else
Three of these are read wrongly more often than the rest, and the plain reading sends you to the wrong field.
The URL is empty.
Also written for a variable name the flow does not know: nothing is left of it by the time the step runs. An address a flow may not open reads the same way, since a flow is a file people pass around.
Element not found.
Click, input, scroll and extract have no separate complaint about a blank selector, so it arrives here.
Cookie not found.
Reading a cookie is always tied to the site in the tab or the domain on the step, never the whole profile.
A bare word instead of a sentence
Past its own time limit the JavaScript step writes the bare word js_timeout rather than a sentence.
Collecting the evidence
Run the flow on one profile so the log stays short, then read the row above the broken one, which usually names the step that left the page wrong.
Write from the Support screen with the flow name and the time. The report travelling with it names the engine and the app version.
What this article does not cover
- A run that never reached its first step. The launch has its own line and article.
- A flow refused before it starts: no steps, no profiles chosen, or a subscription needing attention.
- Errors written by the page itself. Those are not ours to translate.
- Building the flow and choosing the selectors. That is its own subject.
Where this is decided
Each claim above is a place in the code, with a stand where one exists.
- A broken step counts towards the result, so an all-broken run is never reported as done
- apps/desktop/test/run-result-honest.js
- A finished run is kept on disk and read back at startup
- apps/desktop/test/run-log-survives-restart.js
- A flow may only be sent to web addresses, and the check repeats as the step runs
- apps/desktop/test/rpa-reach.js
- Each line in the table is a dictionary entry with a translation per language
- apps/desktop/src/i18n/messages.js
- The condition behind each line, one per step kind
- apps/desktop/src/main/main.js
Questions
- Does a broken step stop the flow?
- No. The next step runs and the flow walks to its end. The result then names how many steps broke.
- Is there an error number to quote?
- No. Every line in the table is a sentence translated into each language the app speaks, so quote it as you see it.
- Can one step hang the run forever?
- The waiting steps and the JavaScript step each carry their own time limit. When it runs out the run writes its line and moves on.
- Why did a tab step read as done and still print a line?
- One line in the table is a warning rather than a failure: no new tab could be opened, so the address loaded in the open one.
Still stuck
Support reads the report that travels with your message and answers with the cause, not with a checklist.