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

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

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

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

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

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

p.s. Selenium + Mozilla - вообще что-то запредельное по глюкавости. Selenium + Chrome - как-то еще живет. IMHO & AFAIK
...
Рейтинг: 0 / 0
23.08.2018, 11:38
    #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
23.08.2018, 12:54
    #39692363
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать скриншот сайта?
Я не знаком с Selenium.

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

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

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

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

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

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

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

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

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

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

selenium тянет за собой кучу не нужных зависимостей, и все ради того чтобы в конечном итоге выполнить ProcessBuilder.start()
...
Рейтинг: 0 / 0
23.08.2018, 15:06
    #39692474
Tsyklop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать скриншот сайта?
Андрей Панфилов, Для этого нужно поставить хром на терминальную Ubuntu?
...
Рейтинг: 0 / 0
23.08.2018, 17:12
    #39692543
Герой дня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать скриншот сайта?
есть же SWT с контроллом в виде браузера.. что еще надо ?
...
Рейтинг: 0 / 0
23.08.2018, 17:22
    #39692549
Tsyklop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать скриншот сайта?
Герой дняесть же SWT с контроллом в виде браузера.. что еще надо ?
Пример можно?
...
Рейтинг: 0 / 0
23.08.2018, 17:34
    #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
Форумы / Java [игнор отключен] [закрыт для гостей] / Сделать скриншот сайта? / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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