powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Сделать скриншот сайта?
18 сообщений из 18, страница 1 из 1
Сделать скриншот сайта?
    #39692093
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Знаю что скриншот сайта можно сделать на Selenium -> PhantomJS.

Есть еще какие-то инструменты для этого? возможно эти инструменты связаны со спрингом?
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692136
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Java.awt.robot теоретически делает скриншоты десктопа.
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692154
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonJava.awt.robot теоретически делает скриншоты десктопа.

Если с рабочем столом - да. У меня терминальная версия Ubuntu 16.04
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692193
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну.. Наверное через processbuilder надо дернуть браузер. А потом сделать скрин.
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692253
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692269
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И spring надо выкинуть из темы обсуждения.

Вы всегда сможете втащить любое java решение в spring.

Но начинать поиск надо с pure java.
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692274
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересовался похожей задачей пару лет назад, все очень растроило ((( В результате пришлось C и Mozilla API использовать.

Т.ч. мне кажется, что через Selenium наверное самый простой (если не единственный) вариант. Хотя, конечно, Selenium еще та глюка ((( Если задача регулярная, в продакшен системе я бы Selenium не использовал - толься C, только hardcore.

p.s. Selenium + Mozilla - вообще что-то запредельное по глюкавости. Selenium + Chrome - как-то еще живет. IMHO & AFAIK
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692283
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopЗнаю что скриншот сайта можно сделать на Selenium -> PhantomJS.

Есть еще какие-то инструменты для этого? возможно эти инструменты связаны со спрингом?

Вот такое решение:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
package com.github.javadev.scansqlru;

import java.io.File;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriverService;
import org.openqa.selenium.remote.DesiredCapabilities;

public class ScanSqlru {

    private static final String URL = "http://www.sql.ru/forum/1301449/sdelat-skrinshot-sayta#21651731";
    private static final String SCREENSHOT_FILE_NAME = "screenshot.jpg";

    public static void main(String... args) throws Exception {
        DesiredCapabilities cap = DesiredCapabilities.phantomjs();
        cap.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX + "userAgent",
                "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36");
        cap.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX + "loadImages", false);
        cap.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX + "javascriptEnabled", true);
        cap.setBrowserName("chrome");
        cap.setVersion("42");
        final WebDriver driver = new PhantomJSDriver(cap);

        Runtime.getRuntime().addShutdownHook(new Thread(() -> driver.quit(), "Shutdown-thread"));

        driver.navigate().to(URL);
        takeSnapShot(driver, SCREENSHOT_FILE_NAME);

        //Close the browser
        driver.quit();
    }

    public static void takeSnapShot(WebDriver webdriver, String fileWithPath) throws Exception {
        //Convert web driver object to TakeScreenshot
        TakesScreenshot scrShot = ((TakesScreenshot) webdriver);
        //Call getScreenshotAs method to create image file
        File srcFile = scrShot.getScreenshotAs(OutputType.FILE);
        //Move image file to new destination
        File destFile = new File(fileWithPath);
        //Copy file at destination
        FileUtils.copyFile(srcFile, destFile);
    }
}



С уважением, Валентин
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692363
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаком с Selenium.

Но я не против. Если это решает задачу.
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692397
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

зачем еще selenium?
Код: java
1.
google-chrome --headless --disable-gpu --window-size=1280,768 --screenshot http://www.sql.ru/

конец истории
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692402
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфиловзачем еще selenium?
Код: java
1.
google-chrome --headless --disable-gpu --window-size=1280,768 --screenshot http://www.sql.ru/

конец истории

Для этого нужно поставить хром на терминальную Ubuntu?
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692420
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopАндрей Панфиловзачем еще selenium?
Код: java
1.
google-chrome --headless --disable-gpu --window-size=1280,768 --screenshot http://www.sql.ru/

конец истории

Для этого нужно поставить хром на терминальную Ubuntu?

А как вам моё решение?

С уважением, Валентин
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692422
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valentin Kolesnikov,
И так к нему прибегнул. Уже раньше был опыт в этом деле и пользовал pJS. Думал что может есть другие варианты.
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692443
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valentin Kolesnikov
А как вам моё решение?

С уважением, ВалентинВаше решение вообще решением не является, вот по каким причинам:
так или иначе нужен бинарник phantomjs, при этом сам по себе phantomjs уже не поддерживается , какие там баги/дыры не известно

selenium тянет за собой кучу не нужных зависимостей, и все ради того чтобы в конечном итоге выполнить ProcessBuilder.start()
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692474
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов, Для этого нужно поставить хром на терминальную Ubuntu?
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692543
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть же SWT с контроллом в виде браузера.. что еще надо ?
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692549
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Герой дняесть же SWT с контроллом в виде браузера.. что еще надо ?
Пример можно?
...
Рейтинг: 0 / 0
Сделать скриншот сайта?
    #39692555
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopГерой дняесть же SWT с контроллом в виде браузера.. что еще надо ?
Пример можно?

примерно так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
public static void main(String[] args) {
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("Browser Test");
    shell.setSize(500, 500);
    shell.setLayout(new GridLayout(1,false));

    final Browser browser = new Browser(shell, SWT.NONE);

    browser.setUrl("https://maps.google.com/maps?hl=en&tab=wl");
    //browser.setVisible(false);
    browser.setLayoutData(new GridData(GridData.FILL_BOTH));

    Button b = new Button(shell, SWT.NONE);
    b.setText("Show");
    b.addListener(SWT.Selection, new Listener() {

        @Override
        public void handleEvent(Event event) {


            Image img = new Image(display, 500, 500);
            GC gc = new GC(img);
            browser.print(gc);
            gc.dispose();

            showImage(img);

        }
    });

    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }


private static class ImageDialog extends Dialog
{

    private Image img;

    protected ImageDialog(Shell parentShell,Image img) {
        super(parentShell);
        this.img = img;
    }
    @Override
    protected Control createDialogArea(Composite parent) {

        Composite comp =  (Composite) super.createDialogArea(parent);

        Label lbl = new Label(comp,SWT.NONE);

        lbl.setImage(img);

        return comp;
    }

    @Override
    protected void okPressed() {
        img.dispose();
        super.okPressed();
    }

}
protected static void showImage(Image img) {

    ImageDialog dialog = new ImageDialog(Display.getDefault().getActiveShell(), img);
    dialog.open();

}
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Сделать скриншот сайта?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]