Вопросы на собеседовании по Selenium — 10 самых частых вопросов
- Что такое POM — Page Object Model?
- В чем разница между findElement() и findElements()?
- Как сделать скролл в Selenium?
- Почему нельзя автоматизировать обход капчи через Selenium?
- Как обрабатывается всплывающее окно в Selenium?
- Какие exceptions бывают в Selenium?
- Как выполнить операцию загрузки файла (upload) в Selenium?
- Как запускается JavaScript-код в Selenium?
- Зачем нужен Selenium Grid?
- Что такое локатор Selenium? Какие есть типы локаторов?
- Какие типы wait-ожиданий есть в Selenium?
1. Что такое POM — Page Object Model?
POM — это дизайн-паттерн, создающий объектные репозитории веб-элементов.
В каждой странице должен быть соответствующий класс страницы отвечающий за поиск веб-элементов и действия с ними.
Применение паттерна POM улучшает читаемость и реюзабельность кода.
2. В чем разница между findElement() и findElements()?
findElement() запрашивает один элемент на странице. Возвращает объект первого найденного элемента по указанному локатору.
findElements() ищет все элементы на странице, подходящие к указанному значению локатора. Все подходящие элементы будут получены и сохранены в список.
Пример:
WebElement element = driver.findElement(By.id(example)); List <WebElement> elementList = driver.findElements(By.id(example));
- findElement() вернет один веб-элемент.
- findElements() вернет список веб-элементов.
3. Как сделать скролл в Selenium?
Промотка выполняется методом scrollBy(). Синтаксис:
executeScript(“window.scrollBy(x-axis,y-axis)”);
Сначала создается JS-объект:
JavascriptExecutor is = (JavascriptExecutor) driver;
Дальше запускается AUT-приложение:
driver.get(“https://www.google.com”);
Дальше команда промотки к нужному месту:
js.executeScript(“window.scrollBy(0,1000)”);
4. Почему нельзя автоматизировать обход капчи через Selenium?
Потому что вся суть капчи — препятствовать таким вещам; чтобы боты/автоматизаторы не получали доступ к чувствительным данным. Поэтому Selenium не может автоматизировать обход.
5. Как обрабатывается всплывающее окно в Selenium?
Понадобится софт типа AutoIt, Robot, или подобный, который может интегрироваться с Selenium. Они “подхватывают” всплывающие окна (и другие подобные Windows-функции), не поддерживаемые в Selenium на нативном уровне.
6. Какие exceptions бывают в Selenium?
NoSuchElementException: для этого локатора не найден соответствующий элемент.
ElementNotVisibleException: элемент есть в DOM, но не видимый.
NoAlertPresentException: попытка переключиться к Alert Box, но окно не отображается.
NoSuchFrameException: попытка переключиться к фрейму, но этот фрейм не найден.
NoSuchWindowException: попытка переключиться к окну, окно не найдено.
UnexpectedAlertPresentException: неожиданное alert-предупреждение блокирует выполнение драйвера.
TimeoutException: выполнение команды завершено по таймауту (а действие так и не выполнено, страница не загрузилась)
InvalidElementStateException: состояние элемента не соответствует нужному действию.
NoSuchAttributeException: попытка подтянуть значение атрибута — но атрибут неверный.
WebDriverException: проблема с драйвером, не дающая ему запуститься.
7. Как выполнить операцию загрузки файла (upload) в Selenium?
sendKeys.
element.sendKeys(“путь к файлу”), далее:
<input type=”file” name=”fileUpload”>
- через Robot API.
- через AutoIT API.
8. Как запускается JavaScript-код в Selenium?
Код JavaScript выполняется в Selenium через интерфейс JavaScriptExecutor.
9. Зачем нужен Selenium Grid?
- Выполняет тест-кейсы параллельно, благодаря чему экономит время
- Мультибраузерное тестирование
- Мультиплатформенное тестирование
10. Что такое локатор Selenium? Какие есть типы локаторов?
Это “адрес”, по которому находят веб-элемент.
Это уникальный идентификатор веб-элемента на странице.
Существуют такие типы локаторов в Selenium:
- ID
- ClassName
- Name
- TagName
- LinkText
- PartialLinkText
- Xpath
- CSS Selector
- DOM
Бонусный вопрос. Какие типы wait-ожиданий есть в Selenium?
Существует 3 типа wait-ожиданий:
- Имплицитное
- Эксплицитное
- “Быстрое” (fluent)
***
А вот подборка статей о прохождении собеседований: