База знаний
Элемент не найден и остальные строки упавшего шага
Где пишется эта строка
Журнал шагов отводит каждому шагу одну строку: имя шага, его состояние и одну строку подробностей. У упавшего шага в ней и стоит причина.
Законченные прогоны хранятся на диске вместе с последними строками журнала.
Упавший шаг не кончает прогон
Остальные профили идут дальше, а что делает этот профиль, решает правило сценария, и его называет строка прямо над кнопкой «Запустить сценарий». Новый сценарий останавливает профиль на упавшем шаге. Сценарий из прежней версии ARMANOS всё равно исполняет следующий шаг и докладывает в конце.
В конце профиль помечается неудачным и сообщает, сколько его шагов сломалось. Прогон, где есть такой профиль, неудачен целиком.
«Готово» значит сделанные шаги
Строки и что менять
Одно предложение приходит от нескольких разных шагов.
| Строка | Что значит | Что менять |
|---|---|---|
| Окно браузера закрыто. | Вкладки, которую вёл прогон, больше нет. Это проверяется перед каждым шагом. | Ищите шаг, закрывающий вкладку, или окно, закрытое рукой во время прогона. |
| URL не заполнен. | После подстановки переменных пригодного адреса не осталось. | Проверьте переменную, дающую адрес. Открывать можно только веб-адреса и пустую страницу. |
| Не удалось перейти по адресу. | Браузер не загрузил адрес. | Откройте тот же адрес рукой в этом профиле, а потом смотрите на прокси. |
| Элемент не появился вовремя. | Шаг ожидания смотрел снова и снова до своего срока и так и не увидел селектор. | Поднимите срок на шаге или ждите то, что страница показывает раньше. |
| Элемент не найден. | Клик, ввод, прокрутка или извлечение посмотрели один раз и ничего не нашли. | Поставьте перед ними ожидание. Пустой селектор читается так же. |
| Не удалось отправить нажатие клавиши. | Браузер не принял ни передачу фокуса, ни само нажатие. | Сперва щёлкните по полю, а потом нажимайте клавишу. |
| Селектор не заполнен. | У шага условия или перебора после подстановки переменных селектора не оказалось. | Заполните поле селектора или проверьте стоящую там переменную. |
| Шаблон URL не заполнен. | Переход к вкладке по адресу или шаг «Ждать запрос», а сверять не с чем. | Впишите в поле совпадения кусок адреса. |
| Код не заполнен. | Тело шага со своим кодом оказалось пустым. | Заполните тело. Переменная, давшая пустоту, опустошает его так же. |
| Подходящий запрос не пришёл вовремя. | Слушать начали вместе с шагом, и до конца срока ничего не совпало. | Поставьте шаг перед тем кликом, который вызывает запрос, а не после него. |
| Куки не найдены. | Поле имени пустое или на этом сайте нет ничего под таким именем. | Заполните имя и будьте на том сайте, которому принадлежат куки. |
| В этой вкладке нет открытой страницы. | На шаге нет домена, а во вкладке нет веб-страницы. Очистке всегда нужна вкладка на сайте. | Сперва перейдите на сайт или заполните поле домена у шага. |
| Слишком много снимков экрана за один прогон (предел 100). | Один профиль перешёл предел одного прогона. Снимок внутри повтора считается на каждом проходе. | Вынесите снимок из повтора или разделите сценарий надвое. |
| Вкладка не найдена. | Переход по номеру указал дальше открытых вкладок, переход по адресу не нашёл ни одной подходящей, либо закрываемой вкладки уже не было. | Сверьте номер с тем, сколько вкладок открыто к этому шагу, а кусок адреса с тем, что в них загружено. |
| Не удалось сохранить куки. | Браузер не принял запись. Та же строка стоит и над удалением, которого он не принял. | Сверьте домен и путь на шаге с настоящими куки. |
| Этот профиль открыт вам только для запуска: менять его может хозяин или тот, кому дали правку. | Аккаунт правку этого профиля от вас не принимает. | Попросите у хозяина правку. |
| Тег длиннее 40 знаков. | Ничего не поменялось. | Сократите тег или переменную в нём. |
| У профиля стало бы больше 20 тегов. | Ничего не поменялось. | Сначала снимите теги или добавляйте меньше. |
| Заметка стала бы длиннее 20 000 знаков: выберите «Заменить заметку». | «Дописать заметку» хранит прежние строки. Ничего не срезано. | Переключите шаг на «Заменить заметку». |
| У шага нет строки для файла TXT. | Поле «Строка» у шага «Записать в файл» пустое. | Заполните его. |
| У шага нет ни одного столбца. | Файлу CSV, XLSX или JSON нужен хотя бы один. | Добавьте столбец. |
| Файл данных не записан: проверьте место на диске и доступ к папке данных. | Диск полон или в папку данных нельзя писать. | Освободите место и нажмите «Папка данных». |
| Новая вкладка недоступна, использована текущая вкладка. | Это не падение. Шаг помечен сделанным, а адрес открылся в уже открытой вкладке. | Ничего, пока следующий шаг не берёт вкладку по номеру: там теперь другая вкладка. |
Когда строка значит не то
Три строки читают неверно чаще прочих, и прямое прочтение ведёт человека править не то поле.
URL не заполнен.
Так же пишется и про имя переменной, которого сценарий не знает: к моменту шага от него не остаётся ничего. И про адрес, открывать который сценарию не дано: сценарий это файл, который люди пересылают друг другу, поэтому проходят только веб-адреса и пустая страница.
Элемент не найден.
У клика, ввода, прокрутки и извлечения нет отдельной жалобы на пустой селектор, поэтому пустой приходит сюда.
Куки не найдены.
Чтение куки всегда привязано к сайту во вкладке или к домену на шаге, а не ко всему профилю.
Голое слово вместо предложения
Когда шаг со своим кодом переходит предел времени, он пишет не предложение, а голое слово js_timeout.
Как собрать улики
Прогоните сценарий на одном профиле, чтобы журнал вышел коротким, и прочитайте строку НАД сломанной. Обычно в ней и назван шаг, оставивший страницу не в том виде.
Напишите через «Помощь» → «Написать в поддержку», назвав имя сценария и время. В отчёте, который едет вместе с письмом, названы выбранный движок и выпуск программы.
Чего эта статья не разбирает
- Прогон, не дошедший до первого шага. У запуска своя строка, и ей отведена статья про сценарий, который не начинается.
- Сценарий, отклонённый до начала: в нём нет шагов, не выбраны профили или подписка требует внимания.
- Ошибки, написанные самой страницей. Переводить их не нам, и ни одной из них в таблице выше нет.
- Сборку сценария и выбор селекторов. Это отдельный предмет статьи про сборку сценария.
Где это решается
Каждое утверждение выше это место в коде, а стенд назван там, где он есть.
- Сломанный шаг идёт в итог, и прогон, где сломались все шаги, не докладывается готовым
- apps/desktop/test/run-result-honest.js
- Законченный прогон лежит на диске и читается обратно при запуске
- apps/desktop/test/run-log-survives-restart.js
- Сценарий можно послать только по веб-адресу, и проверка повторяется в момент самого шага
- apps/desktop/test/rpa-reach.js
- Каждая строка таблицы это запись словаря с переводом на каждый язык программы
- apps/desktop/src/i18n/messages.js
- Условие за каждой строкой, по одному на вид шага
- apps/desktop/src/main/main.js
Вопросы
- Есть ли номер ошибки, чтобы назвать его поддержке?
- Нет. Каждая строка таблицы это предложение, переведённое на любой язык программы, и называть её надо так, как видите её.
- Может ли один шаг подвесить прогон навсегда?
- Нет. У шагов ожидания и у шага со своим кодом есть собственный предел времени, и за ним шаг падает со своей строкой.