selenium
Первый проект в селене с Java
Поиск…
Вступление
Это введение в Selenium с использованием Java. Хотя мы не ожидаем, что вы узнаете что-нибудь о Selenium, вы должны иметь предварительные знания Java, чтобы следовать этому курсу.
Ссылки для скачивания:
Настройка идеи IntelliJ для селена
Предпосылки:
- Java установлен
- Селен извлекается в папке (Содержит 2 файла и 1 папку)
Выполните следующие шаги, чтобы настроить IntelliJ Idea для Selenium.
- Нажмите «Новый проект» .
- Выберите приложение Java <"Hello World"
- Введите имя проекта и создайте его.
Ваш экран должен выглядеть примерно так:
Теперь перейдите к
File < Project Structure < Modules < Dependencies
Там щелкните значок «зеленый плюс» ( +
) и выберите «Библиотека». Затем перейдите к извлеченной папке Selenium и добавьте « selenium-java 2.4.0.jar ». После добавления этого снова нажмите зеленый значок плюс ( +
) и выберите «Каталог». На этот раз найдите папку libs Selenium и нажмите ОК, при выборе.
В конце ваша структура проекта должна выглядеть так:
Теперь нажмите «ОК», и все будет готово.
Настройка ChromeDriver
Предварительные требования: загружен ChromeDriver
Скопируйте следующий код в свой класс.
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "path of the exe file\\chromedriver.exe");
}
Если вы используете linux, укажите путь к двоичному файлу ChromeDriver.
Открытие веб-сайта с использованием Selenium
Мы используем метод get
для перехода на веб-сайт. Например, это откроет Google
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "path of the exe file\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https:www.google.com");
Thread.sleep(3000); //wait for 3 seconds
driver.quit(); //close Chrome
}
driver.quit()
закрывает браузер. Чтобы создать задержку, мы используем Thread.sleep(3000)
.
Получение элементов в селене
Каждый элемент Html в Selenium называется WebElement
. Например, p
тег будет WebElement
, тег будет a
WebElement
и т.д. Рассмотрим следующий HTML структуру:
<a id="link1" href="https://www.google.com">google</a>
<p class="p1">
This is a paragraph
</p>
Теперь, если мы хотим получить a
тег, мы могли бы сделать
WebElement link = driver.findElement(By.id("link1"));
Теперь мы можем нажать на
link.click();
Возьмем еще один пример. Если бы нам нужен текст тэга p
, т. Е. « Это абзац », мы можем сделать
WebElement p = driver.findElement(By.className("p1"));
System.out.println(p.getText());
Мы также можем получить Элементы по тегам, например
WebElement tag = driver.findElement(By.tagName("a"));
Рабочий пример в селене
Теперь, когда мы знаем основы Селена, мы можем сделать свой собственный проект. В этом примере мы создадим программу, которая найдет Новые вопросы о переполнении стека.
Мы начинаем легко, открываем переполнение стека.
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "path of the exe file\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https:stackoverflow.com");
Thread.sleep(3000);
driver.quit();
}
Теперь, если вы посмотрите на источник страницы, вы обнаружите, что все вопросы - a
теги с именем класса question-hyperlink
. Однако, поскольку есть несколько вопросов, мы используем List
of WebElement
вместо WebElement
. Таким образом, мы можем сделать
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "path to chromedriver\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https:stackoverflow.com");
List<WebElement> list = driver.findElements(By.className("question-hyperlink"));
}
Теперь нам нужно получить атрибут href
тега a
, который имеет ссылку на вопрос. Для этого мы можем использовать getAttribute("href")
для каждого WebElement
, например
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "path to chromedriver\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https:stackoverflow.com");
List<WebElement> list = driver.findElements(By.className("question-hyperlink"));
System.out.println(list.size());
list.forEach(e->System.out.println(e.getAttribute("href")));
driver.quit();
}
Это отображает ссылки на верхние вопросы в Stack-overflow.
Получение атрибутов WebElements в Selenium
Чтобы получить атрибут WebElement
, мы используем getAttribute
в этом WebElement
. Например, рассмотрим следующий тег html
<a id="click" href="https://www.google.com">
Мы можем найти атрибут href
элемента Element
WebElement e = driver.findElement(By.id("click"));
System.out.println(e.getAttribute("href")); //prints https://www.google.com