Возможно ли применить машинное обучение или нейронные сети в автоматизации тестирования вебсайтов?
Подскажите новичку, кто сталкивался с подобной задачей.
Необходимо адаптировать скрипт тестирования под изменения html верстки на сайте.
Как работает сейчас - есть примерно 50-60 веб-страниц, для каждой страницы существует скрипт тестирования C# + Selenium - заполнение формы, выборка элементов по XPath' их заполнение, отправка формы, получение результата, оценка.
Проблема заключается в том что периодически меняется разметка страниц, элементы ввода перемещаются в рамках страницы, соответственно, приходится обновлять значения XPathов и постоянно следить за валидностью скриптов.
Вопрос - возможно ли с помощью вышеописанных технологий (машинное обучение, нейронные сети) распознавать элементы на страницах и определять что с ними делать вместо того чтобы выискивать элементы ввода по жесткой привязки по XPath.
Т.е. на вход некий набор правил по заполнению и значения, далее распознавание элементов по их типу и названию и потом их заполнение согласно правилам .
Таким образом если какой-то элемент переименуют или поменяю расположение скрипт не придется менять.
Кто-нибудь сталкивался с подобной задачей, осуществима ли она в принципе?
Как инструмент НС подходят везде. НС - это такая себе мясорубка куда кидают векторы и на выходе что-то получают. Либо классификацию. Либо новый вектор.
Но мне кажется что слабое место этой задачи - это практическая невозможность обучения без учителя.
Вам все равно необходимо что-то показывать этой сети и объяснять.
Еще слабое место этой задачи - это формализация входа и выхода. Что вы подаете на вход? Классическая сетка
оперирует с непрерывными величинами. А у вас что? На вход html? На выходе XPath?
Еще слабое место этой задачи - это формализация входа и выхода. Что вы подаете на вход? Классическая сетка
оперирует с непрерывными величинами. А у вас что? На вход html? На выходе XPath?
Вот я и хотел узнать как применяются НС в данной задаче.
Как мне видится на вход либо HTML либо изображение формы (или фрагменты формы) на выходе указание что в этот фрагмент вводить. Т.е. соответствует ли какое-то поле ввода тому набору данных который у нас есть для заполнения.
Но мне кажется что слабое место этой задачи - это практическая невозможность обучения без учителя.
Вам все равно необходимо что-то показывать этой сети и объяснять.
Вот на этапе обучения кто-то указывает какие данные куда заполнять, только я не понимаю как это формализировать
AlbyAen, тебе скорее всего даже нейросети не хватит. Тебе надо чтоб сеть угадывала место в экране и тыкала пальцем в WebDeveloper/Inspector а тот вычислял например цепочку DIV-где лежит данный элемент. Но мне такая модель видется настолько хрупкой и неадежной (очень много звеньев где все может сломаться) что может быть проще контролировать веб-разработчиков через строгий протокол совместной разработки и тестирования чем вовлекать в такую задачу такие технологии.
Собирайте свойства каждого объекта (свойства тегов, имена классов, стили и т.д.) и его окружение: все объекты той же ноды, где находится текущий объект, цепочку всех родительских нод (xPath), и "дерево" всех вложенных нод.
И так - по каждому.
По количеству совпадений свойств/путей нод И их несовпадений - можно крайне точно определить: на какой предыдущий объект похож текущий.
Т.е. банально по "весам" метрик можно выдавать крайне точное заключение о том, как был изменён конкретный объект относительно предыдущего кода html.
можно что угодно
есть даже проверки сползания интерфейсов в новых версиях браузеров (тот еще мазохизм)
но проще научиться корректно писать Xpath, чтобы такого не было
выискивать элементы ввода по жесткой привязки по XPath
у нас скрипты - недавно пассы сменились на одном, проверял - не меняются с 2018 года, (хотя целевые сайты, конечно, меняются), никаких проблем с логинами
Что мешает разметить ключевые контейнеры id и классами? Заодно и сократите свои кошмарные селекторы. Пс а для тестирования можете записывать в плейсходдеры известные вам значения и искать их в документе, после инициализировать ваш xpath