Перейти к содержимому

База знаний

Элемент не найден и остальные строки упавшего шага

Упавший шаг пишет под собой одну короткую строку в журнале прогона, а прогон идёт дальше, к следующему шагу. В таблице ниже собраны строки, которые шаг пишет предложением, с условием за каждой и полем, которое надо поменять.

Где пишется эта строка

Журнал прогона отводит каждому шагу одну строку: имя шага, его состояние и одну строку подробностей. У упавшего шага в ней и стоит причина.

Законченные прогоны хранятся на диске вместе с последними строками журнала.

Упавший шаг не кончает прогон

Следующий шаг всё равно исполняется, и тот, что за ним, тоже. Прогон доходит до конца сценария и только тогда докладывает.

В конце профиль помечается неудачным и сообщает, сколько его шагов сломалось. Прогон, где есть такой профиль, неудачен целиком.

«Готово» значит сделанные шаги

Прогон, где сломались все шаги, готовым не считается. В итоге названо, сколько их сломалось, и поэтому зелёная строка в Центре задач никогда не стоит над сценарием, который ничего не сделал.

Строки и что менять

Одно предложение приходит от нескольких разных шагов.

СтрокаЧто значитЧто менять
Окно браузера закрыто.Вкладки, которую вёл прогон, больше нет. Это проверяется перед каждым шагом.Ищите шаг, закрывающий вкладку, или окно, закрытое рукой во время прогона.
URL не заполнен.После подстановки переменных пригодного адреса не осталось.Проверьте переменную, дающую адрес. Открывать можно только веб-адреса и пустую страницу.
Не удалось перейти по адресу.Браузер не загрузил адрес.Откройте тот же адрес рукой в этом профиле, а потом смотрите на прокси.
Элемент не появился вовремя.Шаг ожидания смотрел снова и снова до своего срока и так и не увидел селектор.Поднимите срок на шаге или ждите то, что страница показывает раньше.
Элемент не найден.Клик, ввод, прокрутка или извлечение посмотрели один раз и ничего не нашли.Поставьте перед ними ожидание. Пустой селектор читается так же.
Не удалось отправить нажатие клавиши.Браузер не принял ни передачу фокуса, ни само нажатие.Сперва щёлкните по полю, а потом нажимайте клавишу.
Селектор не заполнен.У шага условия или перебора после подстановки переменных селектора не оказалось.Заполните поле селектора или проверьте стоящую там переменную.
Шаблон URL не заполнен.Переход к вкладке по адресу или ожидание запроса, а сверять не с чем.Впишите в поле совпадения кусок адреса.
Код не заполнен.Тело шага со своим кодом оказалось пустым.Заполните тело. Переменная, давшая пустоту, опустошает его так же.
Подходящий запрос не пришёл вовремя.Слушать начали вместе с шагом, и до конца срока ничего не совпало.Поставьте шаг перед тем кликом, который вызывает запрос, а не после него.
Cookie не найдена.Поле имени пустое или на этом сайте нет ничего под таким именем.Заполните имя и будьте на том сайте, которому cookie принадлежит.
В этой вкладке нет открытой страницы.На шаге нет домена, а во вкладке нет веб-страницы. Очистке всегда нужна вкладка на сайте.Сперва перейдите на сайт или заполните поле домена у шага.
Слишком много снимков экрана за один прогон (предел 100).Один профиль перешёл предел одного прогона. Снимок внутри повтора считается на каждом проходе.Вынесите снимок из повтора или разделите сценарий надвое.
Вкладка не найдена.Переход по номеру указал дальше открытых вкладок, переход по адресу не нашёл ни одной подходящей, либо закрываемой вкладки уже не было.Сверьте номер с тем, сколько вкладок открыто к этому шагу, а кусок адреса с тем, что в них загружено.
Не удалось сохранить cookie.Браузер не принял запись. Та же строка стоит и над удалением, которого он не принял.Сверьте домен и путь на шаге с настоящей cookie.
Новая вкладка недоступна, использована текущая вкладка.Это не падение. Шаг помечен сделанным, а адрес открылся в уже открытой вкладке.Ничего, пока следующий шаг не берёт вкладку по номеру: там теперь другая вкладка.

Когда строка значит не то

Три строки читают неверно чаще прочих, и прямое прочтение ведёт человека править не то поле.

  • URL не заполнен.

    Так же пишется и про имя переменной, которого сценарий не знает: к моменту шага от него не остаётся ничего. И про адрес, открывать который сценарию не дано: сценарий это файл, который люди пересылают друг другу, поэтому проходят только веб-адреса и пустая страница.

  • Элемент не найден.

    У клика, ввода, прокрутки и извлечения нет отдельной жалобы на пустой селектор, поэтому пустой приходит сюда.

  • Cookie не найдена.

    Чтение cookie всегда привязано к сайту во вкладке или к домену на шаге, а не ко всему профилю.

Голое слово вместо предложения

Когда шаг со своим кодом переходит предел времени, он пишет не предложение, а голое слово 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

Вопросы

Сломанный шаг останавливает сценарий?
Нет. Следующий шаг исполняется, и сценарий доходит до конца. В итоге потом названо, сколько шагов сломалось.
Есть ли номер ошибки, чтобы назвать его поддержке?
Нет. Каждая строка таблицы это предложение, переведённое на любой язык программы, и называть её надо так, как видите её.
Может ли один шаг подвесить прогон навсегда?
У шагов ожидания и у шага со своим кодом есть собственный предел времени. Когда он вышел, прогон пишет строку и идёт дальше.
Почему шаг вкладки помечен сделанным и всё же напечатал строку?
Одна строка таблицы это предупреждение, а не падение: новую вкладку открыть не вышло, и адрес загрузился в уже открытой.

Так и не вышло

Поддержка читает отчёт, который едет вместе с письмом, и отвечает причиной, а не списком советов.