XPath локаторы в Selenium WebDriver

May 4, 2018 | Author: Anonymous | Category: Internet
Report this link


Description

1. ДокладчикКожухов Илья,Специалист по качеству[email protected]: ra_007 2. 10%1. Вводная часть• термины, определения• XPath в браузере2. Язык XPath3. Построение локаторов в Selenium 3. Терминология• XPath – язык запросов к элементам XML-документа• Selenium WebDriver – инструмент дляавтоматизированного управления браузерами• Локатор – строка, уникально идентифицирующаяэлемент веб-страницы 4. Локаторы в SeleniumИнженер по тестированию задает в Seleniumпоследовательность действий• Открыть страницу• Произвести действие• Проверить результат 5. Локаторы в SeleniumС помощью локаторов Selenium «понимает» скаким веб-элементом производить действиеid ЛокаторnameCSSXPathclassNametagName linkTextpartialLinkText 6. XPath• XML – расширяемый язык разметки• XPath – путь к элементу xml• HTML – язык разметки Web-документа• DOM – объектная модель документа, вчастности HTML• XPath – осуществляет навигацию по DOM 7. Артефакты DOMЭлемент Создать Атрибут Текст 8. XPath в FireFoxFireBughttps://addons.mozilla.org/ru/firefox/addon/firebugFirePathhttps://addons.mozilla.org/ru/firefox/addon/firepath 9. в 10. XPath в ChromeИнструменты разработчикаElementsCtrl + FВызвать Инструменты разработчика:• F12• Ctrl+Shift+I• Настройки – Инструменты –Инструменты разработчика 11. XPath в консоли браузера• $x(path) – принимает ХPath в качествпараметра и возвращает массив элементов• $0 … $4 – доступ к последним вызваннымDOM - элементам 12. 15%1. Вводная часть2. Язык XPath2• абсолютный путь• относительный путь• условия• оси• функции• операторы3. Построение локаторов в Selenium 13. XPath. Абсолютный путьA/B/CПуть от корневого элементаXPathXML 14. Если использовать толькоабсолютный путь 15. XPath. Относительный путь//CОтносительный путь не учитывает промежуточные элементы 16. XPath. Относительный путь //CМожет быть несколько элементов 17. XPath. Условия //C[1]В скобках [] заключены условия выборки 18. XPath. @ - атрибут//C[@id] Будут выбраны все элементы, имеющие атрибут "id" 19. XPath. @ - атрибут//C[@id="one"] Значение атрибута можно сравнивать 20. XPath. * - любой //*[@id]Любой элемент 21. XPath. * - любой //C[@*]Любой атрибут 22. Как быть в этом случае????Имя: Фамилия: Каким XPath найти input для ввода имени? 23. XPath. Оси//div[@id="name"]/following-sibling::input[1]Имя: Фамилия: С помощью осей осуществляется навигация по узлам XML документа 24. XPath. Оси. Сокращения• attribute:: — можно заменить на «@»• child:: — часто просто опускают• descendant:: — можно заменить на «.//»• parent:: — можно заменить на «..»• self:: — можно заменить на «.» 25. XPath. ФункцииФункции позволяют использовать результат операций с множеством нод, строками,числами и логическими операторами в XPath выражених 26. XPath. Функции. text()//C[text()="Доброе утро!"]Доброе утро!Злое утро!Функция text() возвращает набор текстовых нод 27. XPath. Функции. contains()//C[contains(text(), "утро")]Доброе утро!Злое утро!Строковая функция contains() возвращает истину,если первая строка содержит вторую 28. XPath. Функции. contains()//C[contains(@id, "name")]В качестве первого значения может быть подана любая строка 29. XPath. Функции. normalize-space()//C[normalize-space(@id)="name"]Строковая функция normalize-space() убирает лишние и пробелы 30. XPath. Функции. not()//*[not(@*)]Функция not() – логическое отрицание.Будут выбраны любые элементы, не имеющие атрибутов 31. XPath. Функции. count()//*[count(C)=2]Функция count() возвращает количество элементов.Будут выбраны элементы, имеющие два дочерних элемента "C" 32. XPath. Функции. last()//C[last()]Функция last() возвращает номер последнего элемента в множестве 33. XPath. Функции. last()//C[last()-1]Будет выбран предпоследний элемент 34. XPath. Операторы 35. XPath. Позиции элементов//C[position() mod 2=0]Функция position() возвращает позицию элемента.Оператор mod возвращает остаток от деления.Будут выбраны все элементы, имеющие четную позицию 36. 1. Вводная часть2. Язык XPath3. Построение локаторов в Selenium• принципы составления• приемы• примеры365% 37. XPath-локаторы. Принципысоставления• Использовать, когда не хватаетвозможности простых локаторов• Читабельный• Универсальный – не содержит элементов,которые не влияют на нахождениеэлемента• Хранить локаторы в одном месте 38. Как писать локаторы?Используйте приемы 39. Приём 1. Ищите по текстуесли Ваше приложение одноязычноеТекст легко читать и менять.Id могут быть динамическими.Выполнить//button[text()="Выполнить"] 40. Приём 1. Ищите по тексту//td[contains(., "найди")]Функция text() возвращает первый текстовый элемент."найди меня"//td[contains(text(), "найди")] 41. Приём 2. Используйте тольконужные элементыНе используйте элементы, которые не определяют элемент.В промежуточный путь могут быть добавлены новые элементы.Выполнить//button[@id="perform"]//div/button[@id="perform"] 42. Приём 3. Пользуйтесь contains()//button[contains(text(), "Выполнить")]Выполнить действиеИщите элемент по его части.Это поможет избежать лишних пробелов и переносов строк. 43. Приём 3. Пользуйтесь contains()//button[contains(@name, "EditDocument")]Не используйте длинных и непонятных выражений.Их будут читать люди. 44. Приём 4. Комбинируйте пути//button[text()="Выбрать"]|//button[.//*[contains(text(), "Выбрать")]]Комбинируйте пути с помощью "|", если XPath элемента чуть-чуть отличается 45. Приём 5. Пишите относительныеИмяпути//label[@for="name"]/../following-sibling::td[1]//inputПишите путь до нужного элемента относительно других элементов 46. Приём 6. Обратный вариантнаписания//input[./ancestor::td/preceding-sibling::td/label[@for="name"]]ИмяБудет найден input, у которого предок td с предыдущим братом td, содержащим label сатрибутом for, имеющим значение name 47. Приём 7. XPath для таблиц//button[contains(@title, 'Редактировать запись')][./parent::td[(./preceding-sibling::td[@headers='a3']//*[contains(text(), 'Ответчик')])and(./preceding-sibling::td[@headers='a2' and contains(text(), 'Петров Иван')])and(./preceding-sibling::td[@headers='a1' and contains(text(), 'Физическое лицо')])]] 48. Приём 7. XPath для таблицИспользуйте переменные, чтобы найти нужную строку по заданным параметрам. 49. Примеры XPath-локаторов//input[contains(@id, 'ResponseDateField')]//button[.//*[contains(text(), 'Выбрать')]]//td[@id='EXPAND-PLUSMINUS'][following-sibling::*//*[contains(text(), 'Документ')]]//label[contains(text(), 'Вид')]/parent::td/following-sibling::td(//div[contains(text(),"Добавить")])[last()]//table[@id='ViewTable']//tr[@rowindex]//div[@node_name="pyActionArea" and @node_type="MAIN_RULE"] 50. Итог+ С помощью XPath-локатора можно найтипуть до любого элемента 51. Ссылкиhttp://ru.wikipedia.org/wiki/XPathhttp://www.w3schools.com/XPath/default.aspwww.zvon.org/xxl/XPathTutorial/General_rus/examples.htmlhttp://habrahabr.ru/post/114772/ 52. Спасибо за внимание!


Comments

Copyright © 2024 UPDOCS Inc.