1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fanyong920-jvppeteer

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 9.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 03:03 adee405

Jvppeteer

Эта библиотека вдохновлена Puppeteer (Node.js) и в основном сохраняет его API. Библиотека создана для того, чтобы было удобно использовать Java для управления Chrome или Chromium.

Jvppeteer управляет Chromium или Chrome через DevTools. По умолчанию он работает в режиме без графического интерфейса (headless), но можно настроить его для работы в «головом» режиме.

С помощью Jvppeteer можно выполнять большинство операций, которые можно выполнить вручную в браузере! Вот несколько примеров:

  • создавать PDF-файлы страниц;
  • захватывать SPA (одностраничные приложения) и генерировать предварительно обработанный контент («SSR», серверный рендеринг);
  • автоматически отправлять формы, проводить UI-тестирование, вводить данные с клавиатуры и т. д.;
  • создать постоянно обновляемую среду автоматического тестирования. Тестировать можно прямо в последней версии Chrome, используя новейшие JavaScript и функции браузера;
  • собирать трассировку временной шкалы сайта, которая помогает анализировать проблемы с производительностью;
  • тестировать расширения браузера.

Начало работы

Вот краткое руководство по использованию инструментов управления зависимостями (например, Maven или Gradle).

Maven Чтобы использовать Maven, добавьте эту зависимость в файл pom.xml:

<dependency>
  <groupId>io.github.fanyong920</groupId>
  <artifactId>jvppeteer</artifactId>
  <version>1.1.3</version>
</dependency>

Gradle Для использования Gradle добавьте центральный репозиторий Maven в свой список репозиториев:

mavenCentral()

Затем вы можете добавить последнюю версию в свою сборку:

compile "io.github.fanyong920:jvppeteer:1.1.3"

Ведение журнала Библиотека использует SLF4J для ведения журнала и не поставляется ни с одной реализацией ведения журнала по умолчанию. В программе уровень журнала установлен на TRACE.

Автономный jar Если вы не используете какие-либо инструменты управления зависимостями, вы можете найти последний автономный jar здесь.

Быстрый старт

  1. Запустите браузер
// Устанавливаем базовую конфигурацию запуска, здесь выбираем запуск в «головом» режиме
ArrayList<String> argList = new ArrayList<>();
// Автоматически загружаем, после первой загрузки больше не загружаем
BrowserFetcher.downloadIfNotExist(null);
LaunchOptions options = new LaunchOptionsBuilder().withArgs(argList).withHeadless(false).build();
argList.add("--no-sandbox");
argList.add("--disable-setuid-sandbox");
Puppeteer.launch(options);

В этом примере мы явно указываем путь запуска, и программа будет запускать соответствующий браузер в соответствии с указанным путём. Если путь не указан, программа попытается запустить браузер Chrome по пути установки по умолчанию.

  1. Перейдите на определённую страницу
// Автоматически загрузить, после первой загрузки больше не загружать
BrowserFetcher.downloadIfNotExist(null);
ArrayList<String> argList = new ArrayList<>();
LaunchOptions options = new LaunchOptionsBuilder().withArgs(argList).withHeadless(false).build();
argList.add("--no-sandbox");
argList.add("--disable-setuid-sandbox");
Browser browser = Puppeteer.launch(options);
Browser browser2 = Puppeteer.launch(options);
Page page = browser.newPage();
page.goTo("https://www.taobao.com/about/");
browser.close();

Page page1 = browser2.newPage();
page1.goTo("https://www.taobao.com/about/");

Этот пример показывает, что браузер переходит на конкретную страницу, а затем закрывается. Здесь путь запуска не указан. argList используется для хранения некоторых дополнительных параметров командной строки запуска.

  1. Создайте PDF-файл страницы
// Автоматически загрузить, после первой загрузки больше не загружать
BrowserFetcher.downloadIfNotExist(null);
ArrayList<String> arrayList = new ArrayList<>();
// Генерация PDF должна выполняться в безголовом режиме, чтобы она работала
LaunchOptions options = new LaunchOptionsBuilder().withArgs(arrayList).withHeadless(true).build();
arrayList.add("--no-sandbox");
arrayList.add("--disable-setuid-sandbox");
Browser browser = Puppeteer.launch(options);
Page page = browser.newPage();
page.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3");
PDFOptions pdfOptions = new PDFOptions();
pdfOptions.setPath("test.pdf");
page.pdf(pdfOptions);
page.close();
browser.close();

В этом примере браузер переходит на определённую страницу, делает снимок всей страницы и сохраняет его в виде файла PDF. Обратите внимание, что генерация PDF возможна только в режиме headless.

  1. Анализ производительности с помощью TRACING
// Автоматически загрузить, после первой загрузки больше не загружать
BrowserFetcher.downloadIfNotExist(null);
ArrayList<String> argList = new ArrayList<>();
LaunchOptions options = new
``` **Запуск с параметрами и без окна браузера**

LaunchOptionsBuilder().withArgs(argList).withHeadless(true).build(); argList.add("--no-sandbox"); argList.add("--disable-setuid-sandbox"); Browser browser = Puppeteer.launch(options); Page page = browser.newPage(); // запуск трассировки page.tracing().start("C:\Users\howay\Desktop\trace.json"); page.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3"); page.tracing().stop();


В этом примере после завершения навигации по странице создаётся файл в формате JSON, содержащий конкретные данные о производительности страницы. Этот файл можно открыть с помощью инструмента разработчика Chrome и проанализировать производительность.

**5. Создание снимка экрана**

```java
BrowserFetcher.downloadIfNotExist(null);       
ArrayList<String> arrayList = new ArrayList<>();
LaunchOptions options = new LaunchOptionsBuilder().withArgs(arrayList).withHeadless(true).build();
arrayList.add("--no-sandbox");
arraylist.add("--disable-setuid-sandbox");
Browser browser = Puppeteer.launch(options);
Page page = browser.newPage();
page.goto("https://www.baidu.com/?tn=98012088_10_dg&ch=3");
ScreenshotOptions screenshotOptions = new ScreenshotOptions();
// установка области снимка
Clip clip = new Clip(1.0,1.56,400,400);
screenshotOptions.setClip(clip);
// определение пути сохранения
screenshotOptions.setPath("test.png");
page.screenshot(screenshotOptions);

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

Дополнительные примеры см. здесь.

Ресурсы

  1. Puppeteer на китайском языке.
  2. Протокол DevTools.
  3. Параметры запуска Chrome из командной строки.

Лицензия

Все содержимое этого репозитория имеет лицензию Apache. Подробные сведения см. в файле LICENSE.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/fanyong920-jvppeteer.git
git@api.gitlife.ru:oschina-mirror/fanyong920-jvppeteer.git
oschina-mirror
fanyong920-jvppeteer
fanyong920-jvppeteer
master