Две кнопки «Подтвердить»: как автоматизация выбирает чужую карточку

На собственном браузерном стенде нужно было подтвердить карточку A-17. Я переставил две карточки и намеренно нажал по старой координате: подтвердилась B-29. После сброса поиск кнопки внутри A-17 выбрал нужную карточку; B-29 осталась в ожидании.

Схема учебного стенда: после перестановки в старой точке находится B-29. В отдельном эпизоде поиск кнопки внутри карточки A-17 подтвердил A-17. Проверено состояние страницы; серверная запись не выполнялась.
Схема учебного стенда: после перестановки в старой точке находится B-29. В отдельном эпизоде поиск кнопки внутри карточки A-17 подтвердил A-17. Проверено состояние страницы; серверная запись не выполнялась.

Условие проверки: перед действием заново найти нужный объект и убедиться, что его кнопка доступна. В отдельном прогоне заблокированную A-17 не нажимали. Это контролируемая ошибка на учебной странице, а не самостоятельный промах модели. Подтверждение меняло только состояние страницы, без серверной записи. Ниже — исходные условия, наблюдаемые результаты и правило приёмки.

Две карточки, одинаковое действие

На странице расположены A-17 «Инструкция подключения» и B-29 «Список комплектации». У обеих статус «ожидает» и кнопка «Подтвердить». Задача однозначная: подтвердить только A-17.

Стенд позволяет переставить карточки, заблокировать кнопку A-17 и сбросить состояние. Нажатия записываются в видимый журнал. Здесь удобно отдельно проверить выбор объекта, не смешивая его с покупкой, отправкой сообщения или реальным документооборотом.

Проверка прошла в браузерном окне 1280×720. Сначала A-17 была сверху. Центр её кнопки находился примерно в точке x=867,80; y=226,09. Кнопка B-29 располагалась ниже: x=867,80; y=340,09. Эти числа относятся к конкретному состоянию стенда, а не задают универсальное положение кнопок.

Старая точка попала в новую карточку

После перестановки сверху оказалась B-29, снизу — A-17. Центр верхней кнопки остался в той же точке x=867,80; y=226,09. Только теперь кнопка относилась к B-29.

Я намеренно повторил клик по старой точке. Журнал показал «Подтверждена B-29». У B-29 появился статус «подтверждена», а A-17 продолжала ожидать.

Клик действительно сработал. Но выполненная задача не совпала с заданной. Сообщение об успешном нажатии без проверки карточки и её итогового состояния скрыло бы эту ошибку.

Это узкий, воспроизводимый сбой метода: координату сохранили до изменения порядка, а использовали после него. Я не измерял, как часто так ошибаются браузерные агенты, и не сравнивал модели.

Одной надписи «Подтвердить» тоже мало

Следующий эпизод начался со сброса состояния и новой перестановки. Поиск только по подписи кнопки дал два совпадения — по одному в каждой карточке.

На этом этапе клик не выполнялся. Поэтому здесь нет наблюдения «инструмент выбросил ошибку» или «выбрал первую кнопку». Измерен конкретный факт: условие поиска оставило два допустимых кандидата.

Я уточнил область: сначала карточка с идентификатором A-17, затем её кнопка «Подтвердить». В структуре страницы это именованная область «Карточка A-17».

После выбора внутри этой области подтвердилась A-17. B-29 сохранила статус «ожидает», а журнал содержал «Подтверждена A-17». Изменение порядка карточек не поменяло выбранный объект в этом проверенном эпизоде.

Третий отрицательный случай: объект найден, действие недоступно

После отдельного сброса я заблокировал A-17. Проверка её кнопки вернула «недоступна»: isEnabled=false. В состоянии страницы кнопка также отмечена как disabled.

Нажатие не пытались выполнять, принудительный клик не использовали. A-17 осталась ожидающей и заблокированной; B-29 — ожидающей. В журнале есть запись о блокировке, записей о подтверждении нет.

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

Полный эталон для повторения

  • Исходное состояние: A-17 сверху, B-29 снизу; обе ожидают. Старая точка относится к A-17.
  • Перестановка без подтверждения: B-29 сверху, A-17 снизу; обе ожидают. Старая точка уже относится к B-29.
  • Контрольная ошибка: клик по старой точке после перестановки. Фактически подтверждена B-29; A-17 ожидает. Задача подтвердить A-17 не выполнена.
  • Сброс, перестановка, поиск только подписи: найдены две кнопки «Подтвердить». Клик не выполняется; объект ещё не выбран однозначно.
  • Выбор внутри A-17: нажата кнопка этой карточки. A-17 подтверждена, B-29 ожидает; журнал указывает A-17.
  • Отдельный сброс и блокировка A-17: кнопка недоступна. Клик не выполняется; подтверждённых карточек нет.

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

Что записать в задаче автоматизации

Моя заполненная карточка действия выглядит так:

  • Целевой объект: A-17, «Инструкция подключения».
  • Действие: «Подтвердить» внутри этой карточки.
  • Перед выполнением: прочитать текущее состояние, найти нужную область, исключить неоднозначность и проверить доступность её кнопки.
  • Ожидаемое изменение: A-17 получает статус «подтверждена»; B-29 остаётся ожидающей.
  • Подтверждение результата: статус целевой карточки вместе с записью «Подтверждена A-17» в журнале.
  • Остановка: цель не найдена, кандидатов несколько или действие недоступно. Требуется уточнить состояние, а не считать задачу законченной.

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

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

По каким признакам ваша автоматизация проверяет, что изменилась именно нужная карточка, а не соседняя с такой же кнопкой?

Подписывайтесь, если полезны такие разборы: показываю небольшие стенды, контролируемые ошибки и наблюдаемый результат исправления.

11