Webseite mit Shell im Display geladen, wie kann man darin enthaltene Textfelder füllen mit java

Guten Tag verehrte Forenmitglieder.
Mit nachstehendem Code lade ich die Homepage „route.classic.search.ch“ wie ich dies auch in VB gemacht habe.

Meine Frage:
WIE kann ich darin enthaltene Textfelder füllen? Den Button auslösen und die Rückgabe auslesen. Mit VB konnte ich das relativ einfach bewerkstelligen. Da ich aber ein MS-Abtrünniger bin und das Linux-System verwende, soll das jetzt mit Java realisert werden und zwar so, dass es trotzdem auch auf MS-Systemen läuft (wegen meinen Kunden die bei MS bleiben wollen.).

Hier der Code der mir die Webseite wunderbar läd:

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import swing2swt.layout.BorderLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
 
/**
 * @author Tom
 *
 */
public class SWTBrowserExample {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setSize(847, 401);
        shell.setBounds(10, 10, 1600, 900);
        String Seite = „route.classic.search.ch“;
        shell.setText(Seite);
        shell.setLayout(new BorderLayout(0, 0));
        Browser browser = new Browser(shell,SWT.BORDER);
        browser.setUrl(Seite);
        browser.setSize(1800,900);
        shell.pack();
        
        Button btnNewButton = new Button(shell, SWT.NONE);
        btnNewButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseDown(MouseEvent e) {
                System.exit(0);
            }
        });
        btnNewButton.setLayoutData(BorderLayout.SOUTH);
        btnNewButton.setText(„Übernehmen“);
        
        shell.open();
       
        while(!shell.isDisposed()){
            if(!display.readAndDispatch()){
                display.sleep();
            }
        }
     }
}

Die IDs der Elemente die ich ansprechen will sind bekannt. Hier im speziellen:

Document.getElementById(’ routefrom’).InnerText = „Strasse Nr, PLZ ORT“;
und
Document.getElementById(‚routeto‘).InnerText = „Strasse Nr, PLZ Ort“;

  1. fand ich nichts darüber wie ich obige Textfelder befüllen kann.
  2. auch nichts darüber wie ich diesen VB-Code in Java umsetzen muss.
        [display.Document.Forms(0).InvokeMember(„submit“)]

Für Hilfe, wie ich das in oben geladener Webseite bewerkstelligen kann, bin ich sehr Dankbar. Für einen denkanstoss, wie ich den Befehl: Dokument.getElementById im obigen Script handhaben muss, wär wirklich suuper!

Vielen Dank an Alle.
Richi

Hallo,

import org.eclipse.swt.browser.Browser;

ich habe mit den Eclipse SWT Objekte noch nie gearbeitet, aber für

Document.getElementById(’ routefrom’).InnerText = „Strasse Nr,
PLZ ORT“;

würde ich execute(String script) eine Chance geben: http://help.eclipse.org/luna/topic/org.eclipse.platf…

HTH
Heavy

Danke @Heavy
genau so habe ich es schon gemacht… aber es ist auch RICHITIG so nur meine Schreibweise war falsch… :frowning:
Richtig ist:
"document.getElementById(‚routefrom‘).value = ‚Strasse Nr, PLZ ORT‘ ";
also Document KLEIN geschrieben, Text für ID und Ausgabe in Hochkomma
setzen und nicht InnerText sondern value .
hm… sorry…

Trotzdem vielen Dank. Diese Antwort hat mir gezeigt, dass ich auf dem richtigen Weg war…

So jetzt versuche ich mit document.getElement ById(‚routefrom‘).value den geänderten Text in mein java-Programm zurückzunehmen. Geht das auch mit execute? Ich übe mal.

LG
Richi

So… das Problem ist gelöst und zwar (evaluate) heisst der Befehl:
String value = (String)browser.evaluate(„return document.getElementById(‚routefrom‘).value;“);

Vielen Dank @Heavy
Richi