Скачать презентацию Локаторы План лекции Понятие локатора элемента Скачать презентацию Локаторы План лекции Понятие локатора элемента

A1QA - Лекция - Локаторы.pptx

  • Количество слайдов: 41

Локаторы Локаторы

План лекции § Понятие локатора элемента § Механизм передачи локатора § Механизм поиска элемента План лекции § Понятие локатора элемента § Механизм передачи локатора § Механизм поиска элемента в Selenium Web Driver § Виды локаторов § Простые локаторы § Xpath локаторы § CSS локаторы § Инструментарий § Советы по построению локаторов www. a 1 qa. ru

Определение локатора элемента Локатор – это строка, уникально идентифицирующая элемент html-страницы. Локаторы используются в Определение локатора элемента Локатор – это строка, уникально идентифицирующая элемент html-страницы. Локаторы используются в Selenium для поиска элементов. www. a 1 qa. ru

Механизм передачи локатора § В Selenium Web. Driver локаторы реализованы с помощью класса By Механизм передачи локатора § В Selenium Web. Driver локаторы реализованы с помощью класса By (org. openqa. selenium. By) § Передача локатора в Web. Driver API осуществляется по средством вложенных классов: ü By. Id (java. lang. String id) ü By. Class. Name (java. lang. String class. Name) ü By. Css. Selector (java. lang. String css. Selector) ü By. Link. Text (java. lang. String link. Text) ü By. Name (java. lang. String name) ü By. Partial. Link. Text (java. lang. String partial. Linktext) ü By. Tag. Name (java. lang. String tag. Name) ü By. Xpath (java. lang. String xpath) www. a 1 qa. ru

Механизм поиска элемента § Web. Driver обладает объектно-ориентированным API, все типы элементов страницы представлены Механизм поиска элемента § Web. Driver обладает объектно-ориентированным API, все типы элементов страницы представлены единым интерфейсом Web. Element § Существует 2 метода поиска элементов на странице: ü find. Element(By by) ü find. Elements(By by) § Методы поиска учитывают параметры заданных неявных ожиданий (Implicit Wait) во время выполнения www. a 1 qa. ru

Механизм поиска элемента Web. Element find. Element(By by) § Передаваемый параметр: by – механизм Механизм поиска элемента Web. Element find. Element(By by) § Передаваемый параметр: by – механизм определения элемента § Возращает: Первый найденный элемент на текущей странице § Бросает ошибку: No. Such. Element. Exception - если не найдено подходящих элементов ü Нельзя использовать для проверки наличия элемента на странице www. a 1 qa. ru

Механизм поиска элемента java. util. List <Web. Element> find. Elements(By by) § Передаваемый параметр: Механизм поиска элемента java. util. List find. Elements(By by) § Передаваемый параметр: by – механизм определения элемента § Возращает: Список объектов Web. Element Пустой список в случае отсутствия результатов поиска ü Позволяет проверять наличие элемента на странице List elements = driver. find. Elements(By. xpath(“//*”)) Assert. assert. True(elements. size()==0, True) www. a 1 qa. ru

Виды локаторов § Простые § Сложные ü Id ü Xpath ü Name ü CSS Виды локаторов § Простые § Сложные ü Id ü Xpath ü Name ü CSS ü Class Name ü Tag Name ü Link Text ü Partial Link Text www. a 1 qa. ru

Пример поиска элементов www. a 1 qa. ru Пример поиска элементов www. a 1 qa. ru

Примеры простых локаторов § <input id=“username” class=“i-p bdc tranc”> text=“text” title=“” value=“” name=“username”/> ü Примеры простых локаторов § text=“text” title=“” value=“” name=“username”/> ü Id = username § ü Name = autologin § ü Class Name = remind www. a 1 qa. ru

Когда нельзя обойтись простыми локаторами? § Необходимо найти несколько элементов § Необходимо учитывать отношение Когда нельзя обойтись простыми локаторами? § Необходимо найти несколько элементов § Необходимо учитывать отношение одного элемента к другому § Важна позиция элемента § Поиска элемента по нескольким атрибутам www. a 1 qa. ru

Сложные локаторы: Xpath § XPath (XML Path Language) — язык запросов к элементам XML Сложные локаторы: Xpath § XPath (XML Path Language) — язык запросов к элементам XML или XHTML документа. § Строка XPath — это фактически путь к элементу в дереве, где каждый уровень разделяется косой чертой «/» www. a 1 qa. ru

Xpath: Примеры локаторов <root> <node 11/> <node 12/> </node 1> <node 2/> ü xpath=/root/node Xpath: Примеры локаторов ü xpath=/root/node 11 ü xpath=/root//node 11 ü xpath=/root/node 1/*[1] ü xpath=/node 12/. . /node 11 www. a 1 qa. ru

Xpath: Оси § self: : — возвращает текущий элемент. (. ) § ancestor: : Xpath: Оси § self: : — возвращает текущий элемент. (. ) § ancestor: : — возвращает множество предков. § ancestor-or-self: : — возвращает множество предков и текущий элемент. § attribute: : — возвращает множество атрибутов текущего элемента. (@) § child: : — возвращает множество потомков на один уровень ниже. www. a 1 qa. ru

Xpath: Оси § namespace: : — возвращает множество, имеющее пространство имён (то есть присутствует Xpath: Оси § namespace: : — возвращает множество, имеющее пространство имён (то есть присутствует атрибут xmlns). § parent: : — возвращает предка на один уровень назад. (. . ) § descendant: : — возвращает полное множество потомков. (. //) § descendant-or-self: : — возвращает полное множество потомков и текущий элемент. § following: : — возвращает необработанное множество, ниже текущего элемента. www. a 1 qa. ru

Xpath: Оси § following-sibling: : — возвращает множество элементов на том же уровне, следующих Xpath: Оси § following-sibling: : — возвращает множество элементов на том же уровне, следующих за текущим. § preceding: : — возвращает множество обработанных элементов исключая множество предков. § preceding-sibling: : — возвращает множество элементов на том же уровне, предшествующих текущему. www. a 1 qa. ru

Xpath : Пример локатора с осями <div> <label>Odds</label> <div class=“”> <div id=“id 1721 f”> Xpath : Пример локатора с осями

1. 01
ü Xpath = //label[. ='Odds'] /following-sibling: : div//span www. a 1 qa. ru

Xpath : Пример локатора с осями <div> <label>Odds</label> <div class=“”> <div id=“id 1721 f”> Xpath : Пример локатора с осями

1. 01
ü Xpath = //label[. ='Odds'] /. . www. a 1 qa. ru

Xpath : Пример локатора с осями <div> <label>Stake</label> <div class=“”> <div id=“id 1721 f”> Xpath : Пример локатора с осями

1. 01
ü Xpath = //label[. =‘Stake'] /. . /preceding-sibling: : div www. a 1 qa. ru

Xpath : Функции обработки наборов узлов § node-set node() - возвращает все узлы ü. Xpath : Функции обработки наборов узлов § node-set node() - возвращает все узлы ü. //div/node() § String text() - возвращает набор текстовых узлов ü. //span[contains(text(), ”Текст в элементе”)] § number position() - возвращает позицию элемента в множестве ü. //div[@id=‘mail’] /div[position()=3] § number count(node-set) — возвращает количество элементов в node-set ü. //div[count(span)=2] www. a 1 qa. ru

Xpath : Строковые функции § boolean starts-with(string, string) - возвращает true если первая строка Xpath : Строковые функции § boolean starts-with(string, string) - возвращает true если первая строка начинается со второй, иначе false. § boolean ends-with(string, string) - возвращает true если первая строка заканчивается второй, иначе false. § string normalize-space(string) - убирает лишние и повторные пробелы, заменяет пробелами управляющие символы. www. a 1 qa. ru

Xpath : Поиск по атрибуту элемента § Строковые функции часто применяются при поиске элементов Xpath : Поиск по атрибуту элемента § Строковые функции часто применяются при поиске элементов по их атрибутам (части значения атрибута) ü xpath=//div[starts-with(@class, “title”)] ü xpath=//div[contains(@class, “title”)] ü xpath=//div[ends-with(@class, “title”)] www. a 1 qa. ru

Xpath : Логические функции § or , and — логические «или» и «и» § Xpath : Логические функции § or , and — логические «или» и «и» § = , < , >= — логическиее «равно» , «меньше» , «больше либо равно» § boolean true(), false() - возвращает истину, ложь. § boolean not(boolean) - логическое отрицание, возвращает true если аргумент false и наоборот. ü xpath=. //label[text()=“Пароль” and @for=“password”] www. a 1 qa. ru

Сложные локаторы: CSS § CSS — язык стилей, определяющий отображение HTMLдокументов § При запуске Сложные локаторы: CSS § CSS — язык стилей, определяющий отображение HTMLдокументов § При запуске тестов на Internet Explorer'е использование CSS локаторов предпочтительней других из-за скорости выполнение тестов www. a 1 qa. ru

CSS: Поиск по тегу элемента § css = input § xpath= //input § * CSS: Поиск по тегу элемента § css = input § xpath= //input § * – любой элемент § css = div * § xpath = //div/* www. a 1 qa. ru

CSS: Поиск по атрибуту элемента Вид локатора Описание E#myid Сокращение для E[id=“myid”] E. myclass CSS: Поиск по атрибуту элемента Вид локатора Описание E#myid Сокращение для E[id=“myid”] E. myclass Сокращение для E[class=“myclass”] E[foo~=“bar”] Элемент E, атрибут “foo” которого является списком значений, разделенных whitespace-символами, и "bar" – одно из значений E[foo^=“bar”] Элемент E, атрибут “foo” которого начинается с “bar” E[foo$=“bar”] Элемент E, атрибут “foo” которого заканчивается на “bar” E[foo*=“bar”] Элемент E, атрибут “foo” которого содержит подстроку “bar” E[foo|=“bar”] Элемент E, атрибут “foo” которого является списком значений, разделенных дефисами, и начинается с “bar” www. a 1 qa. ru

CSS: Поиск по атрибуту элемента § Любое значение атрибута ü css = input[value] ü CSS: Поиск по атрибуту элемента § Любое значение атрибута ü css = input[value] ü xpath = //input[@value] § Указанное значение атрибута ü css = input[type=“password”] ü xpath = //input[@type=“password”] § Несколько атрибутов ü css = input[type=“button”][value=“Create”] ü xpath = //input[@type=“button”][@value=“Create”] ü xpath = //input[@type=“button” and @value=“Create”] www. a 1 qa. ru

CSS: Поиск по тексту § Данные функции чувствительны к регистру § Не поддерживаются в CSS: Поиск по тексту § Данные функции чувствительны к регистру § Не поддерживаются в css 3. 0 Пример: Message ü css = span: contains(“Message”) ü xpath = //span[contains(text(), “Message”)] ü css = span: contains(“^Message$”) ü xpath = //span[text()=“Message”] www. a 1 qa. ru

CSS: Поиск по родителю элемента <form id=“login”> <label>Username</label><input type=“text”/> <label>Password</label><input type=“password”/> <input type=“submit” value=“Login”/> CSS: Поиск по родителю элемента

ü css = form#login > input[type=“password”] ü xpath = //form[@id=“login”]/input[@type=“password”] www. a 1 qa. ru

CSS: Поиск по предку элемента <table>. . . <td>Cell text</td>. . . </table> ü CSS: Поиск по предку элемента

. . . . . .
Cell text
ü css = table td: contains(“^Cell text$”) ü xpath = //table//td[text()=“Cell text”] www. a 1 qa. ru

CSS: Поиск по индексу элемента <table> <tr> <td>Cell </tr> </table> 1. 1</td> 1. 2</td> CSS: Поиск по индексу элемента

Cell
1. 1 1. 2 2. 1 2. 2 ü css=table > tr: nth-child(2) ü xpath=//table/tr[2] ü CSS : first-child, : last-child www. a 1 qa. ru

CSS: Поиск по элементу рядом <form id=“login”> <label>Username</label><input type=“text”/> <label>Password</label><input type=“password”/> <input type=“submit” value=“Login”/> CSS: Поиск по элементу рядом

ü css=label: contains(“^Username$”) + input ü css=label: contains(“^Username$”) + * ü xpath=//label[text()=“Username”]/following-sibling: : *[1] ü css = label: contains(“^Username$”) ~ input ü xpath = //label[text()=“Username”]/following-sibling: : input www. a 1 qa. ru

Инструментарий www. a 1 qa. ru Инструментарий www. a 1 qa. ru

Инструментарий для Firefox § Firebug www. a 1 qa. ru Инструментарий для Firefox § Firebug www. a 1 qa. ru

Инструментарий для Firefox § Firepath, Firefinder for Firebug www. a 1 qa. ru Инструментарий для Firefox § Firepath, Firefinder for Firebug www. a 1 qa. ru

Инструментарий для Chrome § CSS and XPath checker § Xpath Helper www. a 1 Инструментарий для Chrome § CSS and XPath checker § Xpath Helper www. a 1 qa. ru

Инструментарий для Internet Explorer § IE developer tools www. a 1 qa. ru Инструментарий для Internet Explorer § IE developer tools www. a 1 qa. ru

Советы по построению локаторов § Однозначная идентификация объекта § Стабильность § Относительная простота ü Советы по построению локаторов § Однозначная идентификация объекта § Стабильность § Относительная простота ü //div[@id='onliner-search']/a[contains(. , 'Каталог и цены')] www. a 1 qa. ru

Советы по построению локаторов § Медленная работа XPath в IE (в частности, “//”) ü Советы по построению локаторов § Медленная работа XPath в IE (в частности, “//”) ü //table[@id=“myid”] //td ü //table[@id=“myid”]/tbody/tr/td § Что проверяем – наличие или отсутствие? ü //table[contains(@id, “myid”)] ü //table[@id=“myid_is_complex”)] www. a 1 qa. ru

Спасибо Contact us 5910 Countryard Drive, Ste. 170 Austin, TX 78731 info@a 1 qa. Спасибо Contact us 5910 Countryard Drive, Ste. 170 Austin, TX 78731 info@a 1 qa. ru www. a 1 qa. ru