Перейти к содержимому

Программирование на Python для тестировщиков
онлайн, начало 18 октября
Логи как инструмент тестировщика
онлайн, начало 21 октября
Тестирование REST API
онлайн, начало 21 октября
Организация автоматизированного тестирования
онлайн, начало 18 октября
Фотография

Мониторинг одной страницы с добавляющимся контентом

selenium webdriver java цикл Мониторинг chrome HtmlUnit

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 deeew

deeew

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Александр Климов

Отправлено 13 Октябрь 2018 - 10:28

Здравствуйте!, сразу скажу, что не имею желания стартануть карьеру QA. Но у меня есть определенная задача, и потратив около 5 часов в DuckDuckGo(гугле) - вообще не приблизился к решению.(

Вроде я не крайне тупой, но все что пытался сделать с помощью частей кода выдернутых на разных форумах - не принесло вообще никакого результата.((

Может у кого будет время и желание помочь мне чем то, ниже опишу мое ТЗ.

 

Полопатив кучу инфы - я заинсталлил такой софт для своих нужд:

Selenium webdriver, Java JDK, Intellij IDEA, Python и хром браузер с экзешным chromedriver файлом.

Все вроде ок работает, но python не проверял т.к. вообще не знаком с ним и как он работать должен - я без понятия).

 

С помощью этого софта я наделся выполнить такую задачу:

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

Скрипт должен быть цикличным, т.к. на сколько я понял, нет толковой реализации ожидания нового элемента. Опять же, начитавшись постов на форумах, я предполагаю, что это нужно реализовать через CSS выборку со страницы, т.к. есть еще фактор, что по линку перейти Селен как можно скорее должен, я думал для реализации задействовать "HtmlUnit", чтоб проверка и детект линков был быстрее и меньше грузил память. Форум отображается без JS вполне нормально.

 

Из всего, что выше описал у меня получалось только залогиниться!((, тем не менее, как мне кажется, вот что самое сложное и напрочь мне не понятное:

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

Каким образом, когда заполнится текущая страница - осуществить переход проверки на новую страницу форума, как только она появится?, баттона "следующая" нету, только номера-линки снизу, в каждом цикле проверять цифру наверное не вариант, т.к. они будут меняться постоянно.

И возможна ли работа скрипта с HtmlUnit, или в фоновом процессе (без отображения окна браузера), а результат открытых ссылок получать в виде открытых пользовательских страниц, а не просто логов с адресами?

 

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

Потому буду крайне признателен за любую помощь, подсказку, или линк на подобные рабочие примеры, но ссылки на обучение с нуля, или обзор функционала думаю не стоит кидать, я просмотрел их очень не мало.

На Вашу помощь конечно очень надеюсь, но понимаю, на сколько такая просьба может быть не к месту!)


  • 0

#2 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 559 сообщений
  • ФИО:Роман

Отправлено 14 Октябрь 2018 - 09:34

а в чем проблема описать это ТЗ любому знакомому программеру или студенту, он и напишет вам программу за пару вечеров?

 

да, тут эта просьба не к месту


  • 0

#3 deeew

deeew

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Александр Климов

Отправлено 14 Октябрь 2018 - 10:03

а в чем проблема описать это ТЗ любому знакомому программеру или студенту, он и напишет вам программу за пару вечеров?

 

да, тут эта просьба не к месту

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

Знакомых кодеров нету, а дузья, которые в QA - автоматизированным не занимаются.(

вот пока что есть, вход-выход...)

package host;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;

public class FirstTest {
private static WebDriver driver;

@BeforeClass
public static void setup() {
System.setProperty("webdriver.chrome.driver", "D:/Jsoft/chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://wmasteru.org/login");
}
@test
public void userLogin() {
WebElement loginField = driver.findElement(By.id("ctrl_pageLogin_login"));
loginField.sendKeys("deeew");
WebElement passwordField = driver.findElement(By.id("ctrl_pageLogin_password"));
passwordField.sendKeys("******");
WebElement login = driver.findElement(By.xpath("(//input[@value='Вход'])"));
login.submit();
}
@AfterClass
public static void tearDown() {
driver.get("https://wmasteru.org/logout");
WebElement logout = driver.findElement(By.xpath("//a[text()='Выход']"));
logout.submit();
driver.quit();
}
}

в середине, тело планирую начать с

driver.get("https://нужная страница");
WebElement element = driver.findElement(By.partialLinkText('какой то линк'));
element.click();

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


  • 0

#4 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 15 Октябрь 2018 - 08:21

Как вариант - сделать статический список с линками (например, назвать его alreadyChecked).

Проверили линк - добавили в alreadyChecked.

Начали снова проверять набор линков - для каждого сначала смотрите, нет ли линка, который хотите проверить в alreadyChecked. Если есть - пропускаете, если нет - проверяете и добавляете.

 

п.с.: Java и Python - это разные языки программирования. Если выбрали Java, то Python Вам при описанном выше раскладе - не нужен вообще.


  • 1

#5 deeew

deeew

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Александр Климов

Отправлено 15 Октябрь 2018 - 12:05

Как вариант - сделать статический список с линками (например, назвать его alreadyChecked).

Проверили линк - добавили в alreadyChecked.

Начали снова проверять набор линков - для каждого сначала смотрите, нет ли линка, который хотите проверить в alreadyChecked. Если есть - пропускаете, если нет - проверяете и добавляете.

 

п.с.: Java и Python - это разные языки программирования. Если выбрали Java, то Python Вам при описанном выше раскладе - не нужен вообще.

спасибо за совет!

тогда мне нужно при поиске линка создать переменную, которая будет записываться в список, в случае перехода по ссылке?

сейчас погуглю, как реализовать это.)

 

пока код выглядит у меня так:

 driver.get("https://www.nulled.cc/threads/39150/page-2");
        //Дальше ищу ссылку, открываю в новой вкладке браузера
        String currentWindowHandle = driver.getWindowHandle();
        driver.findElement(By.partialLinkText("http://lasto.com")).sendKeys(Keys.CONTROL, Keys.RETURN);
        //Перехожу в окно ссылки, принтскриню ее, закрываю и возвращаюсь в начальное окно
        ArrayList<String> windowHandles = new ArrayList<String>(driver.getWindowHandles());
        for (String window:windowHandles){
            if (!window.equals(currentWindowHandle)){
                driver.switchTo().window(window);
                File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
                FileUtils.copyFile(scrFile, new File("D:/Jsoft/Screenshots/RESULT_FILENAME.png"));
                driver.close();
            }
            driver.switchTo().window(currentWindowHandle);
        }
        //Проверяем на наличие кнопки вперед
        try {
            driver.findElement(By.xpath("//*[contains(text(), 'Вперёд')]")).click();
        }
        //Если не находим, то остаемся на исходной странице
        catch (NoSuchElementException e) {
            driver.switchTo().window(currentWindowHandle);
        }

только пока вообще не разобрался, как это все сделать циклом непрекращающимся, чтоб скрипт каждые 0.5 сек обновлял и проверял страницу


  • 0

#6 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 807 сообщений
  • ФИО:Dmitry Petrov

Отправлено 15 Октябрь 2018 - 15:22

вам кстати для этого силениум совсем не нужен.

 

есть нативные библиотеки почти в каждом языке программирования которые могут сходить по http на сайт по определённому урлу, взять контент и разобрать его на компоненты (начинаем постигать понятия сериализации и десериализации), выбрав от туда, только то, что вам надо. 

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

 

И кстати, реализация циклов и условий становится настолько простой без силениума, что результата вы достигните гораздо быстрее и получите гораздо больше удовольствия в процессе =).


  • 0

#7 deeew

deeew

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Александр Климов

Отправлено 15 Октябрь 2018 - 18:07

вам кстати для этого силениум совсем не нужен.

 

есть нативные библиотеки почти в каждом языке программирования которые могут сходить по http на сайт по определённому урлу, взять контент и разобрать его на компоненты (начинаем постигать понятия сериализации и десериализации), выбрав от туда, только то, что вам надо. 

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

 

И кстати, реализация циклов и условий становится настолько простой без силениума, что результата вы достигните гораздо быстрее и получите гораздо больше удовольствия в процессе =).

 

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

Но потратив 3+ часа на поиск и не найдя вообще ничего толкового, кроме онлайн сервисов за 400$+ в месяц - я решил, что мне будет проще как то криво накодить, чем потратить еще не понятно сколько времени на поиск проги, которая не факт, что во всем меня устроит)


  • 0

#8 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 807 сообщений
  • ФИО:Dmitry Petrov

Отправлено 16 Октябрь 2018 - 08:22

разместите на сайте sql.ru в разделе работа вашу задачу, думаю баксов за 200 сделаете. А если попросите сделать пояснения, то судя по всему, самостоятельно сможете поправить в случае изменения сайта.

 

селениум не самый лучший инструмент для вашей задачи.


  • 2


Первый Онлайн ИНститут Тестировщиков
онлайн
Школа для начинающих тестировщиков
онлайн
Логи как инструмент тестировщика
онлайн
Selenium 2.0: стартовый уровень
онлайн




Темы с аналогичным тегами selenium webdriver, java, цикл, Мониторинг, chrome, HtmlUnit

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале