Поиск…


Вступление

Это введение в Selenium с использованием Java. Хотя мы не ожидаем, что вы узнаете что-нибудь о Selenium, вы должны иметь предварительные знания Java, чтобы следовать этому курсу.

Ссылки для скачивания:

Селен

IntelliJ IDEA

ChromeDriver

JDK 8

Настройка идеи IntelliJ для селена

Предпосылки:

  1. Java установлен
  2. Селен извлекается в папке (Содержит 2 файла и 1 папку)

Выполните следующие шаги, чтобы настроить IntelliJ Idea для Selenium.

  1. Нажмите «Новый проект» .
  2. Выберите приложение Java <"Hello World"
  3. Введите имя проекта и создайте его.

Ваш экран должен выглядеть примерно так: введите описание изображения здесь

Теперь перейдите к

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


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow