60 вопросов продвинутого уровня на интервью по Selenium

Если вы готовитесь к собеседованию по Selenium, то будет не лишним подтянуть свои знания на данную тему.

В этой статье мы рассмотрим популярные вопросы для Selenium, которые вам могут задать на интервью с HR-специалистом. Мы также дадим советы, как правильно отвечать на эти вопросы.

1. Почему Вы выбираете Selenium Automation Tool?

Ищите работу Junior QA? Тогда вам в наш телеграм канал QA Вакансии. 
Каждую неделю 7 лучших вакансий с телеграм контактом HR компании. 
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ

Я предпочитаю Selenium Automation Tool из-за его следующих преимуществ:

  • Это бесплатный инструмент с открытым исходным кодом. Для него не нужно выделять дополнительно бюджет.
  • Помощь – у инструмента достаточно большая база пользователей и сообществ, в которых могут помочь или дать совет.
  • Кросс-браузерная совместимость – Selenium Automation Tool работает практически во всех популярных браузерах, таких как Chrome, Firefox, Internet Explorer и Safari.
  • Кросс-платформенная совместимость – инструмент работает на таких платформах, как Windows, Linux, Mac.
  • Поддержка нескольких языков программирования – Java, Phyton, Perl, Php, C#, Ruby и т. д.
  • Параллельное выполнение – Selenium Grid поддерживает параллельное выполнение сценариев Selenium.
  • Непрерывная интеграция – Поддержка функции выполнения тестов в ночное время с помощью Jenkins.

2. Что такое Selenium?

Selenium – это бесплатный набор программ с открытым исходным кодом для тестирования веб-приложений с поддержкой различных платформ и браузеров. Он завоевал большую популярность в области автоматизированного тестирования веб-приложений и составил серьезную конкуренцию известному коммерческому инструменту HP QTP (Quick Test Professional) AKA HP UFT (Unified Functional Testing).

В Selenium входят различные программные инструменты. У каждого из них есть свой подход к поддержке автоматизированного веб-тестирования.

Набор программ состоит из пяти компонентов:

  1. Selenium IDE – интегрированная среда разработки Selenium для браузера Firefoх для записи действий пользователя.
  2. Selenium RC (Selenium Remote Control) – устаревшая библиотека для удаленного управления браузерами.
  3. Selenium WebDriver – семейство драйверов для управления браузерами.
  4. Selenium Grid – кластер Selenium-серверов для управления браузерами на разных машинах в одной сети.
  5. Selenium Server – сервер для удаленного управления браузером по сети.

3. Что такое Selenium IDE?

Selenium IDE (Integrated Development Environment – интегрированная среда разработки) – это плагин для Firefox. Это самый простой фреймворк в наборе Selenium Suite, который позволяет записывать и воспроизводить скрипты. Несмотря на то что мы можем создавать сценарии с помощью Selenium IDE, для написания более сложных и надежных тестовых примеров нам необходимо использовать Selenium RC или Selenium WebDriver.

4. Что такое Selenese?

Selenese – это язык, который используется для написания тестовых сценариев в Selenium IDE.

5. Какой браузер поддерживает работу с Selenium IDE?

Единственный браузер, который совместим с Selenium IDE – Mozilla Firefox.

6. Что такое Selenium RC?

Selenium RC – устаревшая библиотека для управления браузерами. До появления WebDriver Selenium RC долгое время был основным проектом Selenium. RC до сих пор активно поддерживается (в режиме сопровождения). Для автоматизации он использует JavaScript. Инструмент поддерживает Java, Javascript, Ruby, PHP, Python, Perl и C# и совместим практически со всеми существующими браузерами.

7. Что такое Selenium WebDriver?

Selenium WebDriver, он же Selenium 2, – это драйвер браузера, программная библиотека, которая позволяет другим программам взаимодействовать с браузером – управлять его поведением, получать данные и т. д. С помощью WebDriver можно проводить автоматизированное тестированное кроссбраузерности сайтов. Он управляет браузером, напрямую взаимодействуя с ним. Selenium WebDriver поддерживает языки Java, C#, PHP, Python, Perl, Ruby.

8. В чем разница между Selenium 3 и Selenium 4?

Selenium 3 – использует протокол JSON для связи между API Selenium Webdriver и родными API браузера. Все запросы и ответы, передаваемые по этому протоколу, кодируются и декодируются.

Selenium 4 – использует стандартный протокол W3C. Благодаря этому запросы и ответы, передаваемые по протоколу, не требуют использования кодирования и декодирования API.

9. Что такое Selenium Grid?

Selenium Grid – это инструмент, используемый вместе с Selenium RC для параллельного запуска тестов на разных машинах под разными браузерами. Проще говоря, он используется для одновременного распределения выполнения тестов на нескольких платформах и окружениях.

10. В чем преимущества Selenium Grid?

  • Он позволяет запускать тестовые сценарии параллельно, тем самым экономя время выполнения тестов.
  • Позволяет выполнять мультибраузерное тестирование.
  • Позволяет запускать тесты на нескольких платформах.

11. Что такое хаб в Selenium Grid?

Это центральный сервер, который управляет выполнением тестов на разных машинах.

12. Что такое узел в Selenium Grid?

Узел – это машина, подключенная к хабу. В Selenium Grid может быть несколько узлов.

13. Какая реализация WebDriver считается самой быстрой?

Самой быстрой реализацией WebDriver является HTMLUnitDriver. Это связано с тем, что HTMLUnitDriver не выполняет тесты в браузере. Запуск браузера и выполнение тестовых примеров занимает больше времени по сравнению с выполнением скриптов без браузера. Для выполнения тестовых примеров HTMLUnitDriver использует простой механизм HTTP-запросов-ответов.

14. Какой язык не поддерживается в Selenium?

Selenium поддерживает основные языки программирования, такие как Java, C#, Perl, Python, Ruby, PHP, Scala и Groovy. На сегодняшний день другие языки с ним не совместимы.

15. Какие типы тестирования поддерживает Selenium?

Selenium поддерживает следующие типы тестирования:

16. Сколько параметров содержится в команде Selenium?

В Selenium необходимо передавать четыре параметра:

  • Хост
  • Номер порта
  • Браузер
  • URL

Хост: Это параметр, который мы используем для привязки Selenium к определенному IP-адресу. Обычно мы запускаем тесты Selenium на локальной машине, поэтому значение будет ‘localhost’. Вместо localhost можно указать IP-адрес.

java -jar <имя банка автономного сервера Selenium> -host <Ваш IP-адрес>.

Номер порта: TCP/IP-порт, который используется для подключения тестов Selenium к хабу Selenium grid. По умолчанию порт хаба равен 4444.
java -jar <имя файла standalone сервера selenium> -role hub -port 4444

Убедитесь, что ни одно приложение в вашей системе не использует этот порт.

Браузер: Для передачи браузера, который должен выполнять наши скрипты Selenium.

URL: URL-адрес приложения.

17. Какие фреймворки с открытым исходным кодом поддерживает Selenium WebDriver?

  • JUnit
  • TestNG

18. Что такое XPath?

XPath – это язык запросов к элементам XML-документа. Он используется для определения местоположения элементов. С XPath мы можем перемещаться по элементам и атрибутам XML-документа, чтобы найти на веб-странице такие веб-элементы, как текстовое поле, кнопка, флажок, изображение и т.д.

19. Когда используются локаторы ID, Name, XPath или CSS Selector?

Локаторы ID и Name используются в тех случаях, когда на веб-странице имеются уникальные идентификаторы и уникальные имена.
CSS Selector может использоваться для повышения производительности и в тех случаях, когда локаторы ID и Name не являются уникальными.
XPath используется при отсутствии предпочтительных локаторов.

20. В чем разница между абсолютным и относительным путями?

Абсолютный путь XPath начинается с корневого узла и заканчивается узлом нужного элемента-потомка. Он берет начало в верхнем узле HTML и заканчивается узлом ввода. Абсолютный путь начинается с одной прямой косой черты (/), как показано ниже.

/html/body/div[3]/div[1]/form/table/tbody/tr[1]/td/input

Относительный путь XPath начинается с любого узла между HTML-страницей и узлом текущего элемента (последний узел элемента). Он прописывается с двойного прямого слеша (//), как показано ниже.

//input[@id='email']

21. Что делать, если функции XPath не могут идентифицировать веб-элемент?

На ранних стадиях разработки программного обеспечения разработчики довольно часто меняют идентификаторы и элементы. В процессе выполнения веб-элементы могут динамически меняться, и мы не можем их идентифицировать. Для решения этой проблемы мы используем оси XPath вместе с функциями XPath.

22. Что такое оси XPath?

Оси XPath используются для поиска нескольких различных узлов в XML-документе из текущего узла контекста.

23. Что такое контекстный узел?

Контекстный узел – это узел, который в данный момент обрабатывается процессором XPath.

24. В чем разница между Assert и Verify в Selenium?

Assert позволяет проверить, присутствует элемент на странице или нет. Если условие Assert истинно, и элемент найден, то управление программой выполнит следующий шаг тестирования. Если же условие ложно и элемент недоступен, то проверка остановится, и дальнейший шаг тестирования не будет выполнен.

Verify: Тест не перестанет выполнятся, независимо от того, истинное или ложное условие Verify. Даже если искомый элемент не будет найдет, все команды при проверке все равно будут выполнены.

25. Что такое Soft Assert и Hard Assert в Selenium?

Soft Assert: собирает ошибки во время @Test Soft Assert, не выдает исключение при неудачном утверждении и продолжает выполнение следующего шага.

Hard Assert: выдает исключение AssertException сразу же при неудачном утверждении, и набор тестов продолжается со следующего @Test.

26. В чем разница между методами setSpeed () и sleep ()?

И sleep(), и setSpeed() используются для задержки скорости выполнения.

setSpeed(): Устанавливает скорость, при которой перед выполнением каждой новой команды Selenium будет применяться конкретное время задержки.

Пример: setSpeed(“5000”) – ожидание в течение 5 секунд

sleep(): Единоразово останавливает текущий поток выполнения команд в нашем Selenium-скрипте на заданный период времени.

Пример: sleep(5000) – Ожидание длится 5 секунд

Примечание: метод setSpeed применим только к Selenium IDE и Selenium RC. Он не может быть использован в Selenium WebDriver.

27. Какие точки верификации доступны в Selenium?

В Selenium IDE в качестве точек верификации мы используем команды Selenese Verify и Assert.
В Selenium WebDriver нет встроенных функций для точек верификации. Здесь все зависит от нашего стиля кодирования.

Примеры точек верификации:

  • Проверка заголовка страницы
  • Проверка наличия определенного текста
  • Проверка определенного элемента (текстового поля, кнопки, выпадающего списка и т.д.)

28. Как запустить браузер с помощью Selenium WebDriver?

Чтобы запустить браузер, нужно создать объект нужного класса драйвера, например FirefoxDriver, ChromeDriver, InternetExplorerDriver и т.д.,

Для запуска драйвера Firefox:
WebDriver driver = new FirefoxDriver();

Для запуска драйвера Chrome:
WebDriver driver = new ChromeDriver();

Для запуска драйвера Internet Explorer:
WebDriver driver = new InternetExplorerDriver();

Для запуска драйвера Safari:
WebDriver driver = new SafariDriver();

29. FirefoxDriver – это класс или интерфейс?

FirefoxDriver является классом Java и реализует интерфейс WebDriver.

30. Что является супер-интерфейсом WebDriver?

В качестве супер-интерфейса WebDriver выступает SearchContext.

31. Для чего мы создаем ссылочную переменную ‘driver’ типа WebDriver?

WebDriver driver = new FirefoxDriver();вместо созданияFirefoxDriver driver = new FirefoxDriver();

Если мы создадим ссылочную переменную driver типа WebDriver, то сможем использовать ту же переменную driver для работы с любым браузером по своему выбору, например IEDriver, SafariDriver и т.д.,

32. Что такое WebElement?

WebElement – это элемент HTML. Он в основном представляет собой элемент DOM, и все HTML-документы состоят из этих элементов HTML.

33. С какими различными исключениями вы сталкивались в Selenium WebDriver?

На моей практике мне встречались следующие исключения:

  1. ElementNotVisibleException
  2. StaleElementReferenceException

Исключение “Элемент не виден”:

Это исключение возникает, когда вы пытаетесь найти определенный элемент на веб-странице, который в данный момент не виден, хотя и присутствует в DOM. Также это иногда случается, если вы пытаетесь найти элемент с помощью xpath, который ассоциируется с двумя или более элементами.

Исключение “Ссылка на устаревший элемент”:

Данное исключение возникает в одном из двух случаев, причем первый встречается чаще, чем второй:

  1. Элемент был полностью удален.
  2. Элемент больше не прикреплен к DOM.

С этим исключением мы сталкиваемся, когда элемент, с которым мы взаимодействуем, уничтожается, а затем создается заново. В этом случае ссылка на элемент в DOM становится неактуальной. Таким образом, мы не можем получить ссылку, на него ведущую.

34. Какие типы ожиданий доступны в Selenium WebDriver?

В Selenium существует три типа ожиданий: неявные, явные и скрытые ожидания.

35. Что такое неявное ожидание в Selenium WebDriver?

Неявное ожидание указывает WebDriver на необходимость подождать определенное время, прежде чем он выдаст исключение. После установки этого времени WebDriver будет ждать элемент в течение указанного временного периода, прежде чем сгенерировать исключение. По умолчанию установлено значение 0 (ноль).

Практический пример

36. Что такое WebDriver Wait в Selenium WebDriver?

WebDriverWait применяется к определенному элементу с заданным ожидаемым условием и временем. Это ожидание применяется только к указанному элементу. Это ожидание может также вызывать исключение, если элемент не найден.

Практический пример

37. Что такое Fluent Wait в Selenium WebDriver?

Fluent Wait — это тип команды ожидания в Selenium, который позволяет тестировщикам ждать, пока элемент не выполнит определенные условия, прежде чем приступить к тестовому сценарию. Он обеспечивает больший контроль над процессом ожидания, позволяя тестировщикам устанавливать пользовательские условия, такие как интервалы опроса и исключения для времени ожидания.

Практический пример

38. Что произойдет, если смешать неявное и явное ожидание в скрипте Selenium?

Согласно официальной документации Selenium, их не рекомендуется смешивать. Это может привести к непредсказуемому времени ожидания.

Неявное ожидание определяется только один раз в коде. Оно будет оставаться неизменным для всех экземпляров объекта драйвера.

Явное ожидание определяется всякий раз, когда это необходимо в коде. Оно будет вызываться в момент выполнения. Это условное ожидание.

Явное ожидание будет имеет приоритет и перезаписывать неявное ожидание.

39. Что произойдет, если смешать в сценарии Selenium методы Thread.Sleep и WebDriver Waits?

Метод Thread.sleep() используют для приостановки выполнения скрипта на заданное время в миллисекундах.

Если мы используем метод WebDriver waits вместе с методом Thread.sleep(), то webdriver приостановит выполнение на указанное время, а затем перейдет к другому ожиданию. Это увеличит время выполнения теста.

40. Как войти на любой сайт, если он показывает всплывающее окно аутентификации для ввода имени пользователя и пароля?

Для этого мы передаем имя пользователя и пароль с URL

http://username:password@url
например, http://myUserName:myPassword@softwaretestingmaterial.com

41. Как ввести текст в текстовое поле с помощью Selenium WebDriver?

Для ввода текста используется метод sendKeys().

WebDriver driver = new FirefoxDriver();
driver.get("https://www.gmail.com");
driver.findElement(By.xpath("xpath")).sendKeys("Software Testing Material Website");

42. Как очистить текст в текстовом поле с помощью Selenium WebDriver?

Текст можно очистить с помощью метода clear().

WebDriver driver = new FirefoxDriver();
driver.get("https://www.gmail.com");
driver.findElement(By.xpath("xpath_of_element1")).sendKeys("Software Testing Material Website");
driver.findElement(By.xpath("xpath_of_element1")).clear();

43. Как получить текст веб-элемента?

Текст веб-элемента получают с помощью метода getText().

package softwareTestingMaterial;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
public class TestTestTest {	@Test
	public void testmethod(){
		System.setProperty("webdriver.chrome.driver", "D:\\Selenium Environment\\Drivers\\chromedriver.exe");
	  	WebDriver driver = new ChromeDriver();
	  	driver.get("https://www.google.com");
	  	String availableText = driver.findElement(By.xpath("//*[@id='gbw']/div/div/div[1]/div[1]/a")).getText();
	  	System.out.println("Text Available is :"+availableText);
	}
}

44. Как получить значение атрибута с помощью Selenium WebDriver?

Это можно сделать с помощью функции getAttribute(value).

Она возвращает значение атрибута, переданного в качестве параметра.

HTML:

<input name="nameSelenium" value="valueSelenium">SoftwareTestingMaterial</input>

Selenium Code:

String attributeValue = driver.findElement(By.name("nameSelenium")).getAttribute("value");
System.out.println("Available attribute value is :"+attributeValue);
Output: valueSelenium

45. Как отправить форму с помощью Selenium WebDriver?

Для отправки формы мы используем метод “submit” на элементе.

driver.findElement(By.id("form_1")).submit();

В качестве альтернативы можно использовать метод click на элементе, который выполняет отправку формы

46. Как нажать клавишу ENTER в текстовом поле в Selenium WebDriver?

Чтобы нажать клавишу ENTER в Selenium WebDriver, необходимо использовать Selenium Enum Keys с его константой ENTER.

driver.findElement(By.xpath("xpath")).sendKeys(Keys.ENTER);

47. Как приостановить выполнение теста на 5 секунд в определенной точке?

Используя метод java.lang.Thread.sleep(long milliseconds), мы можем приостановить выполнение теста на определенное время. Чтобы приостановить выполнение на 5 секунд, необходимо передать параметр 5000 (5 секунд)

Thread.sleep(5000)

48. Что является альтернативой методу driver.get() для открытия URL-адреса с помощью Selenium WebDriver?

Альтернативой методу driver.get(“url”) является метод driver.navigate.to(“url”)

49. В чем разница между driver.get() и driver.navigate.to(“url”)?

driver.get(): Открывает URL и ждет, пока загрузится вся страница.
driver.navigate.to(): Переходит к URL-адресу и не ждет, пока загрузится вся страница.

50. Можно ли в Selenium WebDriver осуществлять навигацию в браузере вперед и назад?

Для навигации вперед-назад в браузере мы используем интерфейс Navigate. В нем есть методы для перемещения назад, вперед, а также для обновления страницы.

driver.navigate().forward(); – переход к следующей веб-странице со ссылкой на историю браузера.
driver.navigate().back(); – возврат на предыдущую веб-страницу с обращением к истории браузера.
driver.navigate().refresh(); – обновление текущей веб-страницы с перезагрузкой всех веб-элементов.
driver.navigate().to(“url”); – запуск нового окна браузера и переход по указанному URL-адресу.

51. Как получить URL текущей страницы в Selenium?

Чтобы получить URL текущей страницы, мы используем функцию getCurrentURL()

driver.getCurrentUrl();

52. Как удалить cookies в Selenium?

Для удаления cookies мы используем метод deleteAllCookies().

driver.manage().deleteAllCookies();

53. Как можно обновить браузер с помощью Selenium WebDriver?

Существует несколько способов обновления страницы в Selenium WebDriver:

  • С помощью команды driver.navigate().refresh().
  • Используя driver.get(“URL”) для текущего URL или driver.getCurrentUrl().
  • С помощью команды driver.navigate().to(“URL”) на текущем URL или driver.navigate().to(driver.getCurrentUrl()).
  • Используя sendKeys(Keys.F5) для любого текстового поля на веб-странице.

54. В чем разница между driver.getWindowHandle() и driver.getWindowHandles() в Selenium WebDriver?

driver.getWindowHandle() – возвращает дескриптор текущей страницы (уникальный идентификатор).
driver.getWindowHandles() – Возвращает набор дескрипторов всех доступных страниц.

55. В чем разница между методами driver.close() и driver.quit()?

Назначение этих двух методов (driver.close и driver.quit) практически одинаково – оба позволяют закрыть браузер. Разница между ними заключается в следующем:

driver.close(): закрывает текущий экземпляр WebDriver.
driver.quit(): закрывает все открытые экземпляры WebDriver.

56. В чем разница между командами driver.findElement() и driver.findElements()?

Разница между командами driver.findElement() и driver.findElements() заключается в следующем.

  • Команда findElement() возвращает один Web-элемент (найденный первым) на основе локатора, переданного в качестве параметра. В то же время команда findElements() возвращает список Web-элементов, полностью удовлетворяющих переданному значению локатора.
  • Синтаксис функции findElement()-
    WebElement textbox = driver.findElement(By.id(“textBoxLocator”));
    Синтаксис функции findElements()-
    Список elements = element.findElements(By.id(“value”));
  • Еще одно различие между этими двумя методами заключается в том, что если элемент не найден, то findElement() выдает исключение NoSuchElementException, тогда как findElements() возвращает список из 0 элементов.

57. В чем разница между свойствами MaxSessions и MaxInstances в Selenium Grid?

MaxInstances – это количество экземпляров браузера одной и той же версии, которые могут быть запущены на удаленном компьютере.

Рассмотрим пример ниже:

-browser browserName=InternetExplorer,version=6,maxInstances=2,platform=WINDOWS
-browser browserName=firefox,version=11,maxInstances=2,platform=WINDOWS

В соответствии с приведенным примером, это позволит нам запустить одновременно (параллельно) 4 экземпляра Internet Explorer и Firefox.

MaxSession определяет, сколько браузеров, независимо от их типа и версии, может работать параллельно на удаленной машине.

Он заменяет параметр “MaxInstances”.

Если maxSession=1, то будет работать не более одного браузера. Если maxSession=2, то одновременно может работать любая из перечисленных ниже комбинаций, независимо от того, какое было задано значение MaxInstances.
2 Internet Explorer
2 Firefox
1 Internet Explorer + 1 Firefox

58. Как выбрать значение в раскрывающемся списке?

С помощью класса Select

WebElement mySelectElement = driver.findElement(By.name("dropdown"));
Select dropdown = new Select(mySelectElement);
dropdown.selectByVisibleText(Text);
dropdown.selectByIndex(Index);
dropdown.selectByValue(Value);

Практический пример

59. Как сделать скриншот в Selenium WebDriver?

При выполнении тестовых сценариев вручную, обнаружив ошибку, мы просто делаем снимок экрана и помещаем его в базу результатов. То же самое можно сделать с помощью Selenium WebDriver.

Снимок экрана с помощью Selenium WebDriver может потребоваться в следующих случаях

i. Проблемы с приложением
ii. Сбой утверждения
iii. Если трудно найти Webelements на веб-странице
iv. Тайм-аут при поиске элементов на веб-странице

Selenium предоставляет интерфейс TakesScreenshot, имеющий метод getScreenShotAs, который может быть использован для создания снимка экрана тестируемого приложения.

В Selenium 3 есть некоторые проблемы при создании скриншотов. Для их решения мы используем утилиту aShot.

60. Как работать с всплывающими окнами или оповещениями в Selenium?

Для обработки всплывающих окон или оповещений на базе Web-оборудования необходимо переключиться на окно оповещения и вызвать методы Selenium WebDriver Alert API.

dismiss(): Щелчок на кнопке Cancel.
accept(): Щелкнуть на кнопке OK.
getText(): Получение текста, присутствующего в оповещении.
sendKeys(): Для ввода текста в окно оповещения.

Практический пример.

Перевод статьи «100 Most Popular Advanced Selenium Interview Questions And Answers».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *