Selenium пример на Java


Появилась задача

Используя Selenium Web Driver, написать программу на Java, которая будет выполнять следующее:

  1. Заходить в социальную сеть ВКонтакте под учетной записью студента.
  2. Прокликивать по очереди разделы главной страницы (Моя страница, Мои друзья, Мои фотографии и т.д.) и сохранять скриншоты в папку на диске. Скриншоты фото.
  3. Размещать на своей стене надпись "Я учусь в …."
  4. После размещения записи на стене, проверять, что она там действительно появилась и текст соответствует введенному
  5. Изменять какие-либо личные данные пользователя и сохранять эти изменения, после чего проверять, что изменения вступили в силу. Пароли должны быть обезличены.
Давайте на примере её узнаем основы работы с селениумом. Подробнее о нем почитать можно здесь, а ниже мы начнем выполнять данное задание.

Итак, прежде всего надо подключить сам селен. Там куча библиотек, зависимостей, так что лучше всего это сделать через Maven (файл pom.xml, подробнее можно почитать здесь). Примерно так его сформировать (добавить зависимость)

<dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>4.0.0</version>
            <scope>test</scope>
        </dependency>
А еще проще – скачать готовый проект с гитхаба. Качаем демо с селеном и смотрим в исходный код, а конкретно в файл HelloSeleniumTest.java. В этом файле один-единственный метод firstTest() со следующим содержимым:

System.setProperty("webdriver.chrome.driver", "resources/windows/chromedriver.exe");

        WebDriver driver = new ChromeDriver();
        driver.get("https://www.upread.ru/");
        driver.quit();
То есть инициализируем драйвер, переходим на сайт (тут я подставил свой блог, на котором вы сейчас, я надеюсь, находитесь) и затем закрываем. Если вы запустите данный код, то прост окно мелькнет какое-то время (в лучшем случае), но это не значит, что ничего не работает. Для начала попробуйте закомментировать последнюю строчку. Также можно скачать последнюю версию драйвера для вашей версии ОС и браузера и попробовать её загрузить (chromedriver.exe у меня).

Также давайте сразу добавим метод для создания скриншота:

public static void takeSnapShot(WebDriver webdriver,String fileWithPath) throws Exception{
        TakesScreenshot scrShot =((TakesScreenshot)webdriver);
         File SrcFile=scrShot.getScreenshotAs(OutputType.FILE);
         File DestFile=new File(fileWithPath);
}
А теперь изменим сам код firstTest так, чтобы он заходил на главную страницу вконтакте, вводил в поля логина пароля ящик и логин, потом ждал секунд 5 (даже при шустром интернете все же необходима некая пауза) и затем делал скрин странички с новостями – куда залогиненный пользователь попадает по умолчанию.

Итак, код:

System.setProperty("webdriver.chrome.driver", "resources/windows/chromedriver2.exe");

        WebDriver driver = new ChromeDriver();
        driver.get("https://www.vk.com");

        driver.findElement(By.id("index_email")).sendKeys("логин_от_вконтакте");
        driver.findElement(By.id("index_pass")).sendKeys("пароль_от_вконтакте ");     
        driver.findElement(By.id("index_login_button")).click();

       Thread.sleep(5000);
        
        this.takeSnapShot(driver, "D://test.png") ;       
И через несколько секунд после запуска наблюдаем такую вот картинку на диске D:



Ну а дальше остальное дело техники. Просто берите адреса ссылок, подставляйте их как аргументы в функцию driver.get() и делайте скрины. Отправить запись на стену, например, тоже несложно: просто смотрите, как это делал бы реальный пользователь, узнавайте идентификаторы или классы элементов, кликайте по ним, вводите текст и отправляйте.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, java, парсинг, вконтакте, автоматизация




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 12. Переназначение переменных PHP
Системные и известные NET цвета
Урок 14. Тип данных String C#