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

deeew

Регистрация: 13 окт 2018
Offline Активность: 20 дек 2018 01:10
*----

Мои сообщения

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

15 октября 2018 - 18:07

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

 

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

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

 

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

 

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

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


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

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 сек обновлял и проверял страницу


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

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();

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