Eingabe (auf Internetseite) durch ein Programm machen lassen

ernst

Top Contributor
Hallo zusammen,
Wenn man mit einem Browser auf eine Internetseite geht, kann man (z.B. ein Mensch)
z.B. einen Button anklicken und einen Text in ein Textfeld eingeben.
Diese Tätigkeiten verrichtet z.B. irgendein Anwender.
Frage:
Wie kann man diese händischen Tätigkeiten des Anwenders ein Programm machen (nachbilden) lassen?
Kann mir jemand dazu Infos bzw. einen Java-Programmcode geben.
Bis jetzt habe ich einfache Servlets (Demos) programmiert.

mfg
Ernst
 

AndiE

Top Contributor
Ich weiß nicht, ob ich es richtig verstehe. Aber rein Theoretisch sollte sich der String, den das Formular aussendet: "www.xy.com? a=x...", doch nachmachen lassen, und von einem Programm senden lassen.
 

JavaMeister

Gesperrter Benutzer
Dazwischen gibt es signifikante unterschiede. Nicht jede Variable wird per get erwartet.

Manchmal werden noch viele versteckte Infos übermittelt. Man erhält Cookies und Infos zurück muss java Script auswerten.

Das bekommt ein Browser besser hin.

Die von dir angesprochene Lösung wären für eine wohldefinierte API sinnvoll
 

ernst

Top Contributor
>
>Ich weiß nicht, ob ich es richtig verstehe. Aber rein Theoretisch sollte
>sich der String, den das Formular aussendet: "www.xy.com? a=x...",
>doch nachmachen lassen, und von einem Programm senden lassen.
>
Rein theoretisch müsstest du dann in einem _fremden_ Programm herausbekommen,
welcher String von diesem wann gesendet wird.
Das stelle ich mir aber nicht einfach so einfach vor (zumindest traue ich mir dies nicht mit elementaren Mitteln zu)
Oder wie willst du das machen?

mfg
Ernst
 

dzim

Top Contributor
Also ganz im Ernst (pun intended): Der Link oben (Selenium) ist schon eigentlich das was du möchtest. Es ist mit "Kanonen auf Spatzen" schiessen, aber nur dadurch bekommst du das Verhalten des Nutzers über Code nachgebildet. Das ist der einzige Sinn und Zweck des Selenium-Frameworks. Egal ob du da mit dem internen Headless-Browser arbeitest oder tatsächlich installierte Browser fernsteuerst (was in Hinblick auf unterschiedliches Verhalten der einzelnen Browser tatsächlich das Beste ist). Fakt ist, das Selenium von vielen Projekten entweder zum automatisierten Monitoren oder Testen von Webseiten verwendet wird. Es ist halt nur ein schwerer Brocken...
 

lord239123

Bekanntes Mitglied
Ich musste sowas mal während eines Praktikums machen.
Dabei ging es darum, Felder automatisch auszufüllen.
Dafür habe ich einfach einen String mit der URL erstellt und an diese URL dann die IDs der Objekte mit den dazu gehörenden Werten angehängt.
Die URL wurde dann per Code im Browser aufgerufen und die Felder waren ausgefüllt.
Um die IDs der Objekte zu bekommen, musst du ein wenig den Quellcode der entsprechenden Seite durchsuchen.
Dafür habe ich mir ein kleines Programm geschrieben, welches automatisch den Quellcode nach Stichwörtern durchsucht.
Z.B. Wenn Vor einem RadioButton steht "männlich" habe ich nach diesem Wort im Quelltext gesucht und habe dadurch die ungefähre Position der ID bekommen.
Ist bei über 1000 Zeilen Quellcode einer Seite sehr nützlich.
 

DarXun

Aktives Mitglied
Ich musste sowas mal während eines Praktikums machen.
Dabei ging es darum, Felder automatisch auszufüllen.
Dafür habe ich einfach einen String mit der URL erstellt und an diese URL dann die IDs der Objekte mit den dazu gehörenden Werten angehängt.
Die URL wurde dann per Code im Browser aufgerufen und die Felder waren ausgefüllt.
Um die IDs der Objekte zu bekommen, musst du ein wenig den Quellcode der entsprechenden Seite durchsuchen.
Dafür habe ich mir ein kleines Programm geschrieben, welches automatisch den Quellcode nach Stichwörtern durchsucht.
Z.B. Wenn Vor einem RadioButton steht "männlich" habe ich nach diesem Wort im Quelltext gesucht und habe dadurch die ungefähre Position der ID bekommen.
Ist bei über 1000 Zeilen Quellcode einer Seite sehr nützlich.

Wie JavaMeister schon schrieb geht das nicht für alle Informationen. Das "Anhängen" geht ja nur bei nem HTTP-GET.
 

ernst

Top Contributor
>
>Dabei ging es darum, Felder automatisch auszufüllen.
>Dafür habe ich einfach einen String mit der URL erstellt und an diese URL
>dann die IDs der Objekte mit den dazu gehörenden Werten angehängt.
>Die URL wurde dann per Code im Browser aufgerufen und die Felder waren ausgefüllt.
>
Wie kannst du veranlassen, daß in einem _fremden_ d.h. nicht vor dir geschriebenem Programm,
nämlich dem Browser, eine URL aufgerufen wird?

mfg
ernst
 

ernst

Top Contributor
>
>Indem Programme - wie etwa Selenium - den Browser fernsteuern.
>Tastatur- und Mauseingaben vornehmen, etc....
>
Ja, das meine ich auch.
Aber - so wie ich - AndiE verstanden habe, will der das ohne Selenium machen.
Und das ist nicht so einfach, oder ?

mfg
ernst
 

JavaMeister

Gesperrter Benutzer
Beispiel: Ein RestService wäre es einfacher ohne Selenium. Da würde man SoapUI nehmen oder eben selber programmieren.

Eine Website, wie OGame oder ein anderes Browsergame (worauf dieser Thread abziehlt) wäre Selenium besser.

Und Code würde hier nix bringen. Dafür ist dein Skill noch überhaupt nicht so weit. Vor allem fehlen Dir auch Grundlagen in HTTP.
 

ernst

Top Contributor
>
>Beispiel: Ein RestService wäre es einfacher ohne Selenium.
>Da würde man SoapUI nehmen oder eben selber programmieren.
>
Ich verstehe den folgenden Satz von dir nicht:
"Ein RestService wäre es einfacher ohne Selenium"
Außerdem, was ist ein RestService ?

>
>Und Code würde hier nix bringen.
>Dafür ist dein Skill noch überhaupt nicht so weit.
>
Was meinst du damit?

>
>Vor allem fehlen Dir auch Grundlagen in HTTP.
>
Welche ?

mfg
ernst
 

stg

Top Contributor
>
>Beispiel: Ein RestService wäre es einfacher ohne Selenium.
>Da würde man SoapUI nehmen oder eben selber programmieren.
>
Ich verstehe den folgenden Satz von dir nicht:
"Ein RestService wäre es einfacher ohne Selenium"
Außerdem, was ist ein RestService ?

Wenn du das Wort nicht kennst, dann gib es doch einfach mal bei Google ein und erhalte 1,23 Milliarden (!) Ergebnisse. Vereinfacht gesagt handelt es sich einfach um eine bestimmte Art von Webservice. Aufgrund der Eigenarten dieser speziellen Services wäre Selenium einfach "zu viel des Guten", da Selenium speziell darauf abzielt Benutzereingaben (in oft nicht oder nur bedingt für Maschinen interpretierbaren Webservices) zu simulieren.

>
>Vor allem fehlen Dir auch Grundlagen in HTTP.
>
Welche ?
HTTP selbst ist hier mit "Grundlagen" gemeint.
Oder übersetzt: Wenn du Fussball spielen willst (das Fernsteuern eines Browsers), dann lern doch erst mal laufen (Webprotokolle etc)
>
>Und Code würde hier nix bringen.
>Dafür ist dein Skill noch überhaupt nicht so weit.
>
Was meinst du damit?
Um beim Fußball zu bleiben: Lerne die Spielregeln, bevor du dich mit Taktik auseinandersetzt.
 

ernst

Top Contributor
>
>Wenn du das Wort nicht kennst, dann gib es doch einfach mal bei Google ein und
>erhalte 1,23 Milliarden (!) Ergebnisse. Vereinfacht gesagt handelt es sich einfach
>um eine bestimmte Art von Webservice
>

1)
Man bekommt zwar viele Ergebnisse, aber bei den meisten wird RestService anders geschrieben,
z.B. mit Bindestrich, oder REST gross geschrieben.

2)
Kannst du mir gute Quellen nennen zu dem Thema "Webservice" ?

mfg
ernst
 

AndiE

Top Contributor
Wie ist das Szenario? Ich bin davon ausgegangen, dass es eine Anwendung in einem Netzwerk gibt. Die einen können mittels dem Webbrowser darauf zugreifen, die anderen mit der Software. Typisch denke ich, ist ein Lager dafür. Der Lagerverwalter hat die Verwaltungssoftware für das Lager, die Kollegen haben Zugriff über den Webbrowser um festzustellen, wo die Teile liegen, die sie brauchen, sie abzurufen usw.. Beide Systeme greifen auf einen gemeinsamen Webserver zu, die Software per REST- die anderen per JSP oder JSP- wäre so mein Ansatz in so einem Fall.
 

Ähnliche Java Themen

Neue Themen


Oben