Frage von JosephGordan, 58

Wie greife ich beim Auslesen einer HTML Seite mit Java auf eine andere Option zu?

Hey erstmal. Ich habe folgendes Problem. Ich will aus einer HTML Seite mehrere Informationen abfragen. Mein Problem ist, dass ich zwar die Seite auslesen kann jedoch ist eine false "option" "selected". Also würde ich gerne die "option" der Seite erst ändern und dann die Werte die sich auf der Seite dadurch ändern auslesen. Könnt ihr mir dabei helfen bzw. ist das überhaupt möglich? Falls ihr nicht genau versteht was ich meine fragt einfach nach.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von grtgrt, 49

Für deinen Zweck solltest du Selenium Webdriver nutzen.

http://www.seleniumhq.org/

Kommentar von grtgrt ,

Wie -- und aus welchen Programmiersprachen heraus -- man Selenium Webdriver nutzen kann, findet sich beschrieben auf Seite http://docs.seleniumhq.org/docs/03_webdriver.jsp .

Kommentar von JosephGordan ,

Das sieht schon mal recht viel versprechend aus. Danke :)
Kannst du mir dazu zufällig auch dementsprechend zu meinem benannten Problem etwas sagen, weil es sonst umständlich wäre mich komplett darein einzuarbeiten.

Kommentar von grtgrt ,

Selenium erlaubt, jede HTML-Seite so zu bedienen, wie User es auch selbst im Dialog mit der Seite tun würden. 

Wie die einzelnen, für dich notwendigen Selenium-Webdriver-API-Aufrufe genau aussehen, musst du im Handbuch nachschlagen.

Kommentar von JosephGordan ,

Hmmm.

Ich hab mich jetzt ein bisschen eingearbeitet. Leider verändert sich der pageText nicht wenn ich eine andere selection auswähle. Was sie eigentlich sollte. Die selection hat sich definitiv geändert, das hab ich überprüft.

Ich weiß nicht ob du mir da weiter helfen kannst.

Kommentar von grtgrt ,

Da die Selektion sich definitiv geändert hat, muss man wohl noch mal zum Server gehen (dann jedenfalls, wenn der Test, der aufgrund der neuen Selektion zu sehen sehen sein sollte, nicht schon im HTML-Code der Seite zu finden ist, was du zunächst mal nachprüfen solltest).

Ist der erwartete Text nicht schon im HTML-Code zu finden, muss die Seite einen Button haben, über den man den Roundtrip zum Server anfordert. Sollte so ein Button nicht zu finden sein, versuch mal, die Seite per Browser-Refresh-Botton neu zu holen.

Kommentar von JosephGordan ,

Also wenn ich in meinem echten Browser eine andere Selection wähle dann ändert sich auch der HTML-Code das habe ich geprüft.

Wenn ich die Seite refreshen würde, würde sich die Selektion wieder auf den Standard select umstellen. Oder hab ich missverstanden was du meintest?

Kommentar von grtgrt ,

Wenn bei einer Bedienung im Dialog ein einziger Mouseclick ausreicht, die Selektion zu ändern und sofort den neuen Text zu sehen, ist der schon im HTML-Code vorhanden. 

Ich fürchte, du hast einen Fehler in Selenium entdeckt. 

Vielleicht hilft es, deinen Fall im Forum http://www.sqaforums.com/forums/selenium/ zu beschreiben (wo dann vielleicht jemand ist, der dir besser helfen kann als ich).

Ist deine HTML-Seite eine öffentlich zugängliche? Wenn ja, unter welcher URL?

Kommentar von grtgrt ,

Auch im Forum https://groups.google.com/forum/#!forum/selenium-users könnte jemand sein, der dir helfen kann. 

Kommentar von JosephGordan ,

Ich hab gestern schon im Stack overflow Forum nachgefragt.

URL: http://www.hotslogs.com/Sitewide/HeroAndMapStatistics
Versuche von Heroe League auf Team League zu stellen. Also ich finde den Teil von Team League zumindest nicht im HTML Code wenn ich auf Heroe League bin.

Antwort
von maximilianus7, 44

so, wie du die frage gestellt hast, machst du den eindruck, als ob du das zusammenspiel zwischen web-server und client (html + ev. javascript) nicht kennst oder nicht verstanden hast.

wenn du es verstanden hättest, dann wüsstest du es im prinzip auch wie es gehen könnte. da würdest du eher fragen, wie simuliere ich eine server-client-schimäre im dreieck server - javaprogramm - client. oder so.

oder erklärst uns genau, was du vor hast.

Kommentar von JosephGordan ,

Uiiii also du verkomplizierst mein Problem da sehr.

Also im Prinzip ist es ganz simpel.

Ich schreibe an einem Java Programm in dem ich Daten aus einer Tabelle im Netz in ein Array einbinde.

Die Internetseite ist in HTML geschrieben und gehört weder mir noch habe ich in irgendeiner Weise administrative Möglichkeiten dabei.

(Keine Sorge das Programm ist für den eigenen Gebrauch)

Jetzt ist es auf der Seite so, dass es für die Tabelle ein Drop Down Menu gibt in dem ich halt z.B. auswählen kann welche Tabelle ich genau haben möchte. Sprich ich wähle was in dem Drop Down Menu aus die Tabelle zeigt die gewünschten Werte jedoch ändert sich nicht der Link. Mit Java kann ich bisher jedoch nur darauf zugreifen was von beginn an als selected ausgewählt ist.

Etwas genauer die Seite sieht im Prinzip so aus:

<select name="Name" onchange="javascript:setTimeout(&#39;__doPostBack(\&#39;ctl00$MainContent$DropDownGameMode\&#39;,\&#39;\&#39;)&#39;, 0)" id="ID" style="font-size:X-Large;">

<option value="5">Option 1</option><option

selected="selected" value="4">Option 2</option>

Ich möchte also, die Daten aus Option 2 haben. Komme jedoch bisher durch java und "jsoup" - Bibliothek nicht da dran.

Hoffe du konntest mich jetzt besser verstehen.

Kommentar von JosephGordan ,

Achso:

Ich hatte vielleicht gehofft, dass man über "URL - Parameter" (Hoffe du verstehst was ich meine) vielleicht da dran kommt. Hab da aber noch keinen Weg gefunden.

Kommentar von maximilianus7 ,

irgendwie ist mir immer noch unklar, was du da treibst.
an die daten der anderen option kommst du ja leicht dran: webseite aufrufen, option umschalten, die html-quelle der antwort mit copy & paste in eine text-datei und dann mit deinem java-jsoup-programm auslesen.

geht das schon? willst du lediglich den händischen option-umschalt-dialog in das programm verlagern?

oder kommst du an die webseite gar nicht so einfach dran da login-geschützt und hast lediglich den default-option-html code als textdatei?

benutzt du das java package HttpClient (o.ä.)?
jedenfalls nicht so simpel das ganze.

dies ist der 2. versuch einer antwort.

--------------------------------------------------

hier der 1.:

meinst du jetzt option 2, die ist doch selected, folglich müssten die gewünschten daten doch zu sehen sein. dann macht die frage aber keinen sinn. (aber dein problem wäre keines)
oder:
du willst, entspr. deiner frage, die option umschalten:

dann ist das problem auf ganz einfache weise gelöst: es geht nicht, kannst du abschminken. jedenfalls falls du - wie ich es (miss?-) verstanden habe - mittels javaprogramm die option umschalten willst: 


beim umschalten der option wird ein javascript (js) code ausgeführt. der sendet die anforderung "option x ausgewählt" zurück and den webserver. dort werden die daten für die neue option zusammengestellt und an den webclient (browser) geschickt.
(sehr wahrscheinlich siehst du die angegebene funktion __doPostBack in dem html auch garnicht)

da du nicht genau erklärst, was du da treibst, vermute ich, dass die angesprochene website mit login geschützt ist. selbst wenn du die neue-option-anforderung nachbauen könntest

Antwort
von jsfs1902, 58

Das wird rein mit HTML schwer. Mit welcher Version bzw. Programm arbeitest du?

Kommentar von JosephGordan ,

Ich schreibe in eclipse ein Java Programm mit dem ich eine HTML Seite aus dem Internet auslesen möchte.

Kommentar von jsfs1902 ,

Hmm. Genaueres kann ich dir jetzt nicht sagen. Ich glaube es könnte rein mit HTML schwer werden. Wenn du CSS oder so kannst könnte ich dir vielleicht helfen !?

Kommentar von JosephGordan ,

Wie würde es denn da aussehen?

Kommentar von jsfs1902 ,

Das kann ich dir jetzt speziell in deinem Fall nicht sagen. Kannst du mit CSS umgehen

Kommentar von JosephGordan ,

Ich persönlich nicht. Mein Kollege vielleicht.

Dachte nur du könntest mir jetzt da etwas konkreteres sagen.

Kommentar von jsfs1902 ,

Kann ich auch. ;) Dann frag mal deinen Kollegen ob er sich mit CopyloadMyritha auskennt? Dann sollte er dir helfen können! Und du kannst gerne nochmal nachfragen wenn er dein Prob nicht beheben kann.

Keine passende Antwort gefunden?

Fragen Sie die Community