Вопросы по XPath:
1. Что такое XPath и для чего он используется в автотестировании?
Ответ: XPath (XML Path Language) — это язык запросов, используемый для навигации по структурам XML и HTML документов.
В автотестировании XPath применяется для поиска элементов на веб-странице для их взаимодействия в тестах.
2. Чем отличается абсолютный XPath от относительного?
Ответ:
Абсолютный XPath начинается с корневого элемента (/) и указывает полный путь к элементу, например: /html/body/div[1]/div[2]/ul/li[3].
Относительный XPath начинается с текущего контекста или любого элемента на странице (//), например: //div[@class='example']. Абсолютный XPath более хрупок, так как любые изменения в структуре страницы могут его сломать.
3. Как выбрать элемент на странице с использованием относительного XPath? Приведите пример.
Ответ: Для выбора элемента можно использовать относительный XPath: //div[@id='menu'] — выберет элемент <div> с атрибутом id="menu".
4. Что такое оси XPath? Какие оси XPath наиболее часто используются?
Ответ: Оси XPath позволяют перемещаться относительно текущего узла в документе. Пример осей:
- ancestor — выбирает всех предков текущего элемента.
- descendant — выбирает всех потомков текущего элемента.
- following-sibling — выбирает всех следующих сиблингов (братьев/сестер) текущего элемента.
- preceding-sibling — выбирает всех предыдущих сиблингов.
5. Как выбрать элемент по его атрибуту в XPath?
Ответ: Пример XPath для выбора элемента по атрибуту: //input[@type='text'] — выберет все <input> с атрибутом type="text".
6. Как выбрать элемент, который содержит текст с использованием XPath?
Ответ: Можно использовать функцию contains для выбора элементов, содержащих определённый текст: //div[contains(text(), 'Пример')].
7. Как выбрать элемент, который находится на определённой позиции среди других элементов?
Ответ: Можно использовать индекс элемента. Пример: //div[3] — выберет третий элемент <div> среди всех <div> на странице или в текущем контексте. Но если есть вариант этого не делать, то лучше не делать. Так как такой вариант выбора считается не стабильным.
8. Как выбрать элемент, который имеет дочерний элемент с определённым атрибутом или текстом?
Ответ: Пример: //div[span[@class='example']] — выберет элемент <div>, у которого есть дочерний элемент <span> с классом example.
9. Как выбрать элемент с помощью логических операторов в XPath?
Ответ: Логические операторы можно использовать для уточнения условий. Пример: //div[@class='example' and @id='test'] — выберет элемент <div>, у которого класс example и id="test".
10. Как выбрать последний элемент в списке с помощью XPath?
Ответ: Для выбора последнего элемента используется функция last(). Пример: (//li)[last()] — выберет последний элемент <li>.
11. Какие у XPath есть недостатки по сравнению с CSS-селекторами?
Ответ: XPath может быть медленнее, особенно в некоторых браузерах (например, в Internet Explorer). Также XPath может быть сложнее для восприятия новичками и может создавать более длинные и хрупкие селекторы.
12. Как выбрать элемент по частичному совпадению атрибута в XPath?
Ответ: Пример: //div[contains(@class, 'partial-class')] — выберет элемент <div>, у которого класс содержит строку partial-class.
13. Что такое функция starts-with в XPath и как она используется?
Ответ: Функция starts-with используется для выбора элементов, атрибут которых начинается с определённой строки. Пример: //div[starts-with(@id, 'start')] — выберет все элементы <div>, у которых id начинается с start.
14. Как выбрать элемент, у которого нет определённого атрибута в XPath?
Ответ: Пример: //div[not(@class)] — выберет все элементы <div>, у которых нет атрибута class.
Вопросы по CSS-селекторам:
1. Что такое CSS и для чего он используется в автотестировании?
Ответ: CSS (Cascading Style Sheets) — это язык стилей, используемый для описания внешнего вида HTML-документов. С помощью CSS можно задавать такие параметры, как цвет, шрифты, размеры, отступы, расположение элементов и другие визуальные характеристики веб-страницы.
CSS-селектор — это выражение, которое используется для выбора HTML-элементов на веб-странице, чтобы затем применить к ним стили или манипулировать ими в тестах. CSS-селекторы являются частью языка CSS и позволяют выбирать элементы по различным характеристикам, таким как имя тега, идентификатор, класс, атрибут и даже их положение в DOM-структуре.
В контексте автотестирования, CSS-селекторы применяются для нахождения элементов на странице, чтобы взаимодействовать с ними — например, нажимать на кнопку, заполнять поля ввода или проверять состояния элементов.
2. Какие основные типы CSS-селекторов существуют?
Ответ:
- По тегу: div — выбирает все элементы <div> на странице.
- По классу: .example — выбирает все элементы с классом example.
- По идентификатору (ID): #header — выбирает элемент с идентификатором header.
- По атрибуту: input[type='text'] — выбирает все элементы <input>, у которых атрибут type равен text.
- Комбинированные: div.example — выбирает все элементы <div>, которые имеют класс example.
- Псевдоклассы: a:hover — выбирает все ссылки <a>, на которые наведен курсор мыши.
3. Как выбрать элемент по классу с использованием CSS-селектора?
Ответ: Для выбора элемента по классу используется точка (.).
Пример: .example-class — выберет все элементы с классом example-class.
4. Как выбрать элемент по идентификатору с использованием CSS-селектора?
Ответ: Для выбора элемента по идентификатору используется символ решетки (#).
Пример: #example-id — выберет элемент с идентификатором example-id.
5. Как выбрать элемент по атрибуту в CSS-селекторе?
Ответ: Пример: input[type='text'] — выберет все элементы <input>, у которых type="text".
6. Как выбрать элемент, который содержит определённый текст, с использованием CSS-селектора?
Ответ: В CSS-селекторах нет встроенной поддержки для поиска по тексту. Для этого используется XPath или JavaScript.
7. Как выбрать дочерний элемент с помощью CSS-селектора?
Ответ: Пример: div > p — выберет все элементы <p>, которые являются непосредственными дочерними элементами <div>.
8. Как выбрать все элементы, следующие за определённым элементом на одном уровне (сиблинги)?
Ответ: Пример: div ~ p — выберет все элементы <p>, которые являются сиблингами элемента <div>.
9. Как выбрать первый или последний элемент в наборе с помощью CSS?
Ответ:
- Для первого элемента: ul li:first-child
- Для последнего элемента: ul li:last-child
10. Как выбрать элемент по частичному значению атрибута с помощью CSS-селектора?
Ответ: Пример: [class*='partial-class'] — выберет все элементы, у которых атрибут class содержит строку partial-class.
11. Как выбрать элемент, атрибут которого начинается с определённого значения?
Ответ: Пример: [class^='start-class'] — выберет все элементы, у которых атрибут class начинается со строки start-class.
12. Как выбрать элемент, атрибут которого заканчивается на определённое значение?
Ответ: Пример: [class$='end-class'] — выберет все элементы, у которых атрибут class заканчивается на строку end-class.
13. Как выбрать элемент, который является непосредственным соседом другого элемента (adjacent sibling selector)?
Ответ: Пример: h1 + p — выберет элемент <p>, который непосредственно следует за элементом <h1>.
14. Как выбрать все элементы, находящиеся внутри определённого элемента?
Ответ: Пример: div p — выберет все элементы <p>, которые находятся внутри любого <div>.
15. Какие преимущества и недостатки использования CSS-селекторов по сравнению с XPath?
Ответ:
Преимущества CSS-селекторов:
- Быстрее выполняются в браузерах (особенно при поиске по id).
- Легче читаемы и короче.
Недостатки:
- Меньше возможностей по сравнению с XPath (например, поиск по тексту).
- Не все браузеры поддерживают сложные CSS-селекторы.
- в мобильном автотестировании с использованием Appium невозможно использовать, так как там строится дерево XML.
16. Как выбрать элемент на основе состояния (например, активный или видимый элемент) в CSS?
Ответ:
Примеры:
- input:checked — выберет все отмеченные чекбоксы.
- button:disabled — выберет все заблокированные кнопки.
17. Как выбрать элемент по псевдоклассам в CSS-селекторах?
Ответ: Примеры:
- :hover — выберет элемент, на который наводится курсор.
- :focus — выберет элемент, который находится в фокусе.
- :nth-child(n) — выберет элемент на позиции n.
18. Как выбрать элемент, который является четвёртым в своём родительском элементе?
Ответ: Пример:
ul li:nth-child(4) — выберет четвёртый элемент <li> в списке <ul>.
Обсуждение и сравнительные вопросы:
1. Когда лучше использовать XPath, а когда CSS-селекторы?
Ответ: CSS-селекторы лучше использовать для простых выборок по классам, тегам и атрибутам, так как они быстрее и проще. XPath удобен для более сложных выборок, таких как выбор элементов по тексту или для навигации по сложной структуре документа.
2. Какие преимущества и недостатки у XPath и CSS-селекторов в контексте автотестирования?
Ответ:
XPath:
Преимущества: более гибок, позволяет выбирать элементы по тексту или использовать логические операторы.
Недостатки: может быть медленнее, особенно в старых браузерах.
CSS-селекторы:
Преимущества: быстрее работают в браузерах, проще и короче.
Недостатки: не поддерживают выбор по тексту и могут быть менее гибкими.
3. Какие селекторы (XPath или CSS) быстрее работают в браузере и почему?
Ответ:
CSS-селекторы обычно работают быстрее, так как они оптимизированы для рендеринга DOM в браузерах.
XPath может быть медленнее, особенно в старых браузерах (например, Internet Explorer).
4. Каковы ваши предпочтения при выборе между XPath и CSS для локаторов? Почему?
Ответ:
Предпочтение зависит от задачи.
Для простых выборок (по классу, атрибуту) лучше использовать CSS-селекторы, так как они быстрее.
Для сложных выборок (например, по тексту или по отношению к другим элементам) лучше использовать XPath.
Вместо оглавления. Что вы найдете на канале QA Helper - справочник тестировщика?
Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper - справочник тестировщика
Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.
Обязательно прочитайте: Что должен знать и уметь тестировщик
Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам.