Найти тему

Вопросы на собеседовании автотестировщику про XPATH и CSS

Оглавление

Вопросы по 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 - справочник тестировщика

Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.

Обязательно прочитайте: Что должен знать и уметь тестировщик

Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам.