Open browser selenium java

Open and Close/Quit Browser in Selenium

In the above line which opens the Firefox browser, I hope the reader is familiar with creating an object in java.

  • WebDriver — Webdriver is the interface that is inherited from SearchContext
  • new — new is the keyword in java that creates an object (address space)in the heap area of the CPU
  • FirefoxDriver() — FirefoxDriver() is a constructor of FirefoxDriver class that implements all the methods present in the webdriver interface and this opens the firefox Browser.
  • driver — driver is a reference variable, which refers to the address space created on the heap.
  • ; — line ending statement
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class OpenFirefox < public static void main(String[] args) throws Exception < WebDriver driver=new FirefoxDriver(); >>
Code Example for Opening Firefox [ Selenium 3.0 and above ]
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class OpenFirefox < public static void main(String[] args) throws Exception < System.setProperty("webdriver.gecko.driver", "c:pathgeckodriver.exe"); WebDriver driver = new FirefoxDriver(); >>
Code Example for Opening Chrome
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class OpenChrome < public static void main(String[] args) throws Exception < // we have to set the .exe file path to open Google chrome System.setProperty("webdriver.chrome.driver", "chromedriver.exet file path till .exe"); WebDriver driver = new ChromeDriver(); >>
Code Example for Opening Opera
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class OpenOpera < public static void main(String[] args) throws Exception < // we have to set the .exe file path to open Opera System.setProperty("webdriver.chrome.driver", "C:/Users/PATH/operadriver-0.1.0-win32.exe"); WebDriver driver = new ChromeDriver(); >>
Code Example for Opening Microsoft Edge
import org.openqa.selenium.WebDriver; import org.openqa.selenium.edge.EdgeDriver; public class OpenOpera < public static void main(String[] args) throws Exception < // we have to set the .exe file path to open ms Edge System.setProperty("webdriver.edge.driver", "MicrosoftWebDriver.exe path till .exe"); WebDriver driver = new EdgeDriver(); >>
Code Example for Opening Html Unit Driver
import org.openqa.selenium.WebDriver; import org.openqa.seleniumunitUnitDriver; public class OpenOpera < public static void main(String[] args) throws Exception < // we have to set the .exe file path to open ms Edge WebDriver driver = new HtmlUnitDriver(); >>

Close and Quit Browser in selenium

Close browser

To close a browser, we need to call a close() method from selenium; we can also work without closing a browser (i.e.) we can open another browser instance without closing the existing browser, but existing the browser takes little space.

System.setProperty("webdriver.gecko.driver", "D:PATHgeckodriver.exe"); WebDriver driver=new FirefoxDriver(); driver.close(); //closes the browser
Quit Browser in selenium

To close a browser window, we need to call the close() method from the web driver, but what if we want to close all browser windows opened by the current instance. To Close all windows we need to call quit() method from webdriver

System.setProperty("webdriver.gecko.driver", "D:PATHgeckodriver.exe"); WebDriver driver=new FirefoxDriver(); driver.quit(); //closes all browser windows

Quit Browser vs. Close Browser

Close browser closes the current browser window, Quit browser will close the all the browser windows opened by the driver

Читайте также:  Как изменить переменную javascript

Quit browser will not only just closes the browser windows, but quit() also terminates the driverserver from the CPU process, which saves us some memory but close() will not do it.

Once quit() is used, then the driver object becomes not-reachable, so you cannot perform any operation on the driver object. Close() make the driver object still avail to the user.

how to close a tab in selenium :

You can close the current tab using the close() method in selenium but after closing the tab make sure you are using switchTo().Window() command to get control of other windows.

how to the close already opened the browser in selenium:

First and foremost is this, you cannot connect to the existing browser window in selenium. So closing an already opened browser in selenium is not possible.

Recommended Readings

I am Pavankumar, Having 8.5 years of experience currently working in Video/Live Analytics project.

Источник

Selenium + Java

Изображение баннера

Там где приведён код я часто делаю лишние переносы строк, чтобы он влезал в экран. Если код слишком длинный — пользуйтесь полосой прокрутки снизу.

Подключить Selenium к проекту IntelliJ

Найдите среди доступных языков Java и кликните на Download

Добавление Selenium в проект IntelliJ изображение с сайта www.andreyolegovich.ru

Распакуйте архив. Содержимое будет примерно таким

Добавление Selenium в проект IntelliJ изображение с сайта www.andreyolegovich.ru

Откройте ваш проект в IntelliJ и нажмите FileProject Structure

Выберите Modules, затем нажмите на плюс справа и выберите 1. JARs or directories…

Добавление Selenium в проект IntelliJ изображение с сайта www.andreyolegovich.ru

Перейдите в папку, в которую вы только что распаковали архив и выделите все .jar файлы из корня и из подпапки libs

Добавление Selenium в проект IntelliJ изображение с сайта www.andreyolegovich.ru

Переходите к следующей главе

Подключить драйвер браузера

На каком бы языке программирования вы ни писали код операция по подключению драйвера браузера примерно одинакова.

Простой тест

Чтобы убедиться, что Selenium подключён успешно — вставьте следующий код и скомпилируйте его.

На забудьте добавить путь до драйвера в системную переменную PATH о том как это сделать можете прочитать в статье «Основы Selenium»

import org.openqa.selenium.WebDriver ; import org.openqa.selenium.firefox.FirefoxDriver ; public class Main < public static void main (String[] args) < WebDriver driver = new FirefoxDriver() ; >>

Если Вы не хотите или не можете отредактировать переменную PATH попробуйте зарегистирировать путь до драйвера — перед строкой WebDriver driver = … вставьте

Поиск элементов

О том как это сделать можете прочитать в статье «Основы Selenium»

Прежде всего нужно подключить By в Java это делается следующим образом:

Часто бывает недостаточно просто найти элемент. Чтобы совершать над найденным какие-то действия подключите WebElement

Пример поиска элементов

Небольшой пример поиска элементов.

Сделать это всё разными способами

Заполенение простой формы

Воспользуемся самым надёжным методом — по id. Изучив исходный код страницы вы увидите следующий код

Следовательно, нужный id это name1

Клик на ссылку — поиск по тексту

С помощью linkText найдём все ссылки с текстом Renovation, выберем первую и кликнем на неё.

Клик на ссылку — поиск по CSS селектору

У всех ссылок в этом примере тоже одинаковый текст — Italy. Но нам нельзя пользоваться одним и тем же приёмом, поэтому изучим код страницы и выясним, что у нужной ссылки есть класс march8

Будем искать ссылку, то есть cssSelector a, с классом march8

Клик на изображение

Теперь разберёмся с картинкой. Воспользуемся поиском по тэгу.

Переключатели

Нужно найти на странице www.urn.su/IT/selenium/basic_test/ переключатель и поставить его в положение Lannister

В качестве проверки вывести в терминал содержимое.

Я пользовался списком, поэтому импортировал import java.util.List;

import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import java.util.List; public class WebDriverRadioButtons < public static void main(String[] args) < WebDriver driver = new FirefoxDriver(); driver.get("http://www.urn.su/qa/ui/basic_test/"); ListradioButtons = driver.findElements(By.name("house")); radioButtons.get(1).click(); for (WebElement radioButton : radioButtons) < if (radioButton.isSelected()) < System.out.println(radioButton.getAttribute("value")); >> > >

Флажки

Нужно найти на странице www.urn.su/qa/ui/basic_test/ флажки и отметить Cersei

Изучив код страницы можно понять, что у нужного элемента прописан id, поэтому найти его очень просто.

Выпадающие списки

Нужно найти на странице www.urn.su/qa/ui/basic_test/ флажки и выбрать Dawn

Я буду использовать Select, поэтому нужно предварительно подлючить import org.openqa.selenium.support.ui.Select;

Таблицы

Нужно найти на странице www.urn.su/qa/ui/basic_test/ таблицу. Во внешнюю таблицу вложена внутренняя. Нужно добраться до элемента в третьей строке вложенной таблицы. Для проверки выведем содержимое этого элемента в терминал.

Обратите внимание на строки 14, 15 и 16. Сначала драйвер находит внешнюю таблицу, затем я уже не вызываю driver, а ищу только во внешней таблице, а затем только во внутренней таблице.

Дождаться появления элемента

Элементы могут подгружаться на страницу с разной скоростью. Чтобы избавить себя от лишней головной боли нужно по максимуму использовать возможности Selenium

В следующем примере вы можете посетить страницу поиска по сайту urn.su дождаться когда подгрузится скрипт от Яндекса, вставить в поиск слово java ,исключительно для подстраховки дождаться когда подгрузится кнопка Найти и нажать на неё.

Implicit Wait

Время ожидания заданное с помощью Implicit Wait, это глобальная настройка для WebDriver. Каждый раз когда нужно найти элемент на странице WebDriver будет искать либо пока не найдёт либо пока не пройдёт это время.

Через каждые 500 мс WebDriver будет обращаться к DOM на предмет наличия нужного элемента.

Explicit Wait

Явное ожидание в Selenium используется для указания веб-драйверу дождаться определенных условий (Ожидаемые условия) или превышения максимального времени, прежде чем выдавать исключение “ElementNotVisibleException”. Это интеллектуальный вид ожидания, но он может быть применен только к указанным элементам. Это дает лучшие возможности, чем неявное ожидание, поскольку оно ожидает динамически загружаемых элементов Ajax.

Как только мы объявляем явное ожидание, мы должны использовать “ExpectedConditions” или мы можем настроить, как часто мы хотим проверять условие, используя Fluent Wait. В наши дни при реализации мы используем Thread.Sleep() как правило, не рекомендуется использовать

Источник

Оцените статью