программный поиск локаторов для селена - PullRequest
0 голосов
/ 11 сентября 2018

Что я делаю

Я новичок в Selenium и пробую его, потому что у моего босса могут быть проекты, над которыми я могу работать, если у меня появится опыт использования Selenium для тестирования веб-приложений нашей компании. Я провел небольшое исследование, чтобы определить основные проблемы, с которыми сталкиваются веб-тестеры, использующие Selenium, и одна из них - надежный поиск локаторов для веб-сайтов. Чтобы запомнить это и сделать мою жизнь проще, я создал простую программу, которая принимает локаторы (xpath, className, ect) и пробует каждый из них итеративно.

В чем проблема?

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

драйвер веб-драйвера = новый веб-драйвер; driver.findelement (By.id («идентификатор был вставлен здесь»));

Однако найти идентификаторы и прочее вручную и прочитать все эти HTML-вещи сложно и довольно запутанно, так как я не особо углубился в веб-дизайн, поэтому Javascript CSS XML и HTML относительно новы для меня. Я знаю некоторые (очень) основы, но я не мог найти дорогу к хорошо спроектированному веб-сайту.

Что я хочу

должен иметь возможность щелкнуть что-то вроде «проверить элемент» и получить список локаторов для этого элемента. Обычно для меня самый простой способ - щелкнуть правой кнопкой мыши на выделенном HTMl для этого элемента и выбрать «копировать Xpath», но автоматически генерируемые выражения xpath не всегда являются лучшими для поиска элементов. Я нашел похожий вопрос, который касается этой проблемы здесь:

Selenium 2: программный поиск локаторов веб-элементов

Однако этот вопрос не соответствует моим потребностям, потому что он более специфичен для гибких локаторов xpath и делает все чисто программно. Также был предоставлен ответ «используйте инструменты разработчика» и «нет других инструментов». Я хочу попробовать свои силы в создании простого инструмента, но мне нужно знать, с чего начать. То, что я хочу, - это простой способ щелкнуть или иным образом выбрать / программно зарегистрировать локаторы веб-элемента и / или получить простое окно сообщения, которое находит мне возможные идентификаторы, локаторы, имена классов, возможные пути xpath в списке действий. Я хочу сделать это, чтобы я мог просто скопировать, вставить текст из этого окна сообщения или записать сообщение в код, который должен идентифицировать webelement.

Хорошая идея, но с чего мне начать?

Моя проблема в том, что я понятия не имею, с чего начать. Я думаю, что мне нужно было бы узнать какой-то способ программирования для моей мыши, а затем выучить достаточно HTML, чтобы я мог разобрать локаторы, но мне нужно руководство, потому что это широкий путь и, вероятно, не совсем то, что мне нужно. Поэтому я спрашиваю, что мне нужно изучать / делать, чтобы можно было легко увидеть все возможные локаторы веб-элемента сразу. Я открыт для предложений о том, как мне научиться / создать простой инструмент, который помог бы мне (и, вероятно, многим другим) преодолеть эту проблему.

1 Ответ

0 голосов
/ 11 сентября 2018

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

Эти инструменты, безусловно, полезны, потому что вы можете взять то, что они вам дают, в качестве базового уровня, а затем начать сворачивать, пока не достигнете необходимого уровня многословия, полагаясь на как можно меньше связанных элементов.В лучшем случае вы можете использовать инструмент инспектора элементов в Firefox или Chrome для быстрого перехода к элементу в DOM, и если ваш элемент использует уникальный атрибут, такой как id, то это часто все, что вам нужно.(Вы можете легко проверить свои локаторы с помощью консоли javascript, если приложение использует jquery, выполнив одно из следующих действий: $("locator") $$("locator") $j("locator") в зависимости от версии jquery)это становится намного проще и, на мой взгляд, в долгосрочной перспективе повысит вашу производительность, потому что работающие локаторы могут и могут перестать работать, так как тестируемое приложение подвергается ревизии dev, и выяснение того, что из этого отличается, может быть проблемой отладки.в своем собственном.Таким образом, часть минимизации случаев поломки ваших локаторов из-за изменений в тестируемом приложении - это удобство ручной проверки домена и создания локаторов, которые настолько независимы от местоположения, насколько это возможно.И то, что я имею в виду под независимостью от места нахождения, - это нацеливание на атрибуты, которые не будут меняться, и на то, что мы не полагаемся на иерархию элементов или порядковое значение родственного элемента (в случае элементов списка), которые могут изменяться по мере пересмотра пользовательского интерфейса.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...