Gibt es ein simples JWebbrowser Element?

Diskutiere Gibt es ein simples JWebbrowser Element? im Java Basics - Anfänger-Themen Bereich.
S

StepMuc87

Hi,

Ich bin neu in Java, bin aber an sich ein guter Web-Entwickler und habe früher viel Anwendungssoftware mit Delphi gemacht (gibt's leider nicht mehr).

Jetzt liegt eine Aufgabe vor mir bei der ich von ungefähr 500 Webseiten Screenshots machen muss um die abzulegen - dafür bin ich aber erheblich zu faul, deshalb will ich mir ein Java-Tool dafür schreiben.

Meine Frage: Aus der Delphi- und iOS-Welt kenne ich simpel zu bedienende Webbrowser-Elemente für die eigene Applikation. Was könnt ihr bei Java empfehlen? Geht definitiv um Einfachheit. Kein Mensch außer mir wird diese App je bedienen. Danke!
 
H

handshake45

Selenium kann das durchaus:
Java:
import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import com.google.common.io.Files;

public class Bot1Test {
	public static void takeAScreenshot(WebDriver wd, String page, String file) throws IOException {
		wd.get(page);
		TakesScreenshot ts = (TakesScreenshot) wd;
		File file2 = ts.getScreenshotAs(OutputType.FILE);
		Files.copy(file2, new File(file));
	}

	public static void main(String[] args) throws IOException {
		// WebDriverManager.firefoxdriver().setup();
		// WebDriver wd = new FirefoxDriver();
		System.setProperty("webdriver.chrome.driver", "/usr/lib/chromium-browser/chromedriver");
		WebDriver wd = new ChromeDriver();
		wd.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
		takeAScreenshot(wd, "https://www.java-forum.org/thema/gibt-es-ein-simples-jwebbrowser-element.188941/",
				"out1.png");
	}
}
 
H

handshake45

Hier noch schnell relevante dependencies für Selenium und automatische Webdriver (einige Versionen könnten aber nicht mehr aktuell sein):
Code:
	<dependencies>
		<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-java</artifactId>
			<version>3.141.59</version>
		</dependency>
		<dependency>
			<groupId>io.github.bonigarcia</groupId>
			<artifactId>webdrivermanager</artifactId>
			<version>3.8.1</version>
			
		</dependency>
	</dependencies>
 
MoxxiManagarm

MoxxiManagarm

Ich finde Selenium an der Stelle fast too much, wäre aber ein gangbarer Weg. Ich würde eher zur JavaFX WebView raten. https://o7planning.org/de/11151/anleitung-javafx-webview-und-webengine Zugegebener Maßen ist es einfacher mit Selenium den Screenshot zu erstellen, aber dafür lädst du dir nicht gleich so einen Batzen in deine Applikation.


Insgesamt basiert das auf der snapshot Methode von Node (WebView ist ein Node), welches dir ein WriteableImage liefert. Dieses kannst du mit entsprechendem Tooling in eine Datei schreiben.
 
Zuletzt bearbeitet:
S

StepMuc87

Vielen lieben Dank ihr beiden!
Da habe ich jetzt erstmal genügend Anhaltspunkte um mich in beides einmal einzuarbeiten!

Danke!
 
H

handshake45

Vielleicht möchte er FX ja nicht verwenden, zum Zweiten gibt es einfachere Wege um ein Screenshot eines WebView zu erstellen.
 
MoxxiManagarm

MoxxiManagarm

Vielleicht möchte er FX ja nicht verwenden
Vielleicht will er auch Selenium nicht verwenden. Where is your point? Sind alles nur Vorschläge Tobi. Ich hatte nur meine Meinung zu Selenium geäußert, dass es eben ein großer Batzen ist. Man sollte sich schon gut überlegen, ob man sich diesen in die Applikation lädt. Außdem muss der ChromeDriver auch regelmäßig gepflegt werden, wenn man das Tool dauerhaft einsetzen möchte.

zum Zweiten gibt es einfachere Wege um ein Screenshot eines WebView zu erstellen.
Ja, das Beispiel im Link ist dafür ausgelegt auch Bereiche abzudecken, die im View Overflow sind, also außerhalb des sichtbaren Bereichs (Scrolling). Für die einfache View ohne Scrolling reicht, wie oben erwähnt, den snapshot mit dem WriteableImage in eine Datei zu schreiben.
 
Zuletzt bearbeitet:
Thema: 

Gibt es ein simples JWebbrowser Element?

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben