Две кнопки «Подтвердить»: как автоматизация выбирает чужую карточку
На собственном браузерном стенде нужно было подтвердить карточку A-17. Я переставил две карточки и намеренно нажал по старой координате: подтвердилась B-29. После сброса поиск кнопки внутри A-17 выбрал нужную карточку; B-29 осталась в ожидании.
Условие проверки: перед действием заново найти нужный объект и убедиться, что его кнопка доступна. В отдельном прогоне заблокированную 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» в журнале.
- Остановка: цель не найдена, кандидатов несколько или действие недоступно. Требуется уточнить состояние, а не считать задачу законченной.
На настоящем сайте к этому добавятся его собственные условия успешного выполнения. В моём стенде журнал хранится в состоянии страницы: он не доказывает запись на сервере или сохранение после перезагрузки.
Проверены перестановка, одинаковые подписи и блокировка. Прокрутка, изменение масштаба, перекрытие всплывающим окном и перестановка между последней проверкой и самим кликом в этот опыт не входили. Один успешный выбор по области не доказывает устойчивость ко всем изменениям интерфейса.
По каким признакам ваша автоматизация проверяет, что изменилась именно нужная карточка, а не соседняя с такой же кнопкой?
Подписывайтесь, если полезны такие разборы: показываю небольшие стенды, контролируемые ошибки и наблюдаемый результат исправления.