Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

ausfüllen von web formularen

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
wiso
•-->
•-->


Anmeldedatum: 05.09.2006
Beiträge: 25

BeitragVerfasst am: 14.09.2006 - 22:20    Titel: ausfüllen von web formularen Antworten mit Zitat

guten tag,
habe ich bei apple script die möglichkeit das eingeben von text, auf web-seiten-formularen, zu automatisieren.

ich rufe eine ulr mit apple-script auf.
dann möchte ich auf dieser web-seite z.b. ins feld name und ins feld passwort automatisiert etwas per script eingeben und den ok-knopf bestätigen.

wie geht man das an? muss man das über die mauszeiger-koordinaten machen? gibts da eventl. extensions oder skript-erweiterungen?

besten dank für tips,
mfg,
wiso

(...ich weiss dass es für diese dinge passwortmanger usw. gibt - das soll auch nur ein leicht erklärbares beispiel sein)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Daisy
•-->
•-->


Anmeldedatum: 26.04.2002
Beiträge: 79

BeitragVerfasst am: 16.09.2006 - 09:42    Titel: Antworten mit Zitat

Hallo wiso,

welchen Browser möchtest du für diese Aktion verwenden?
Mit Safari gäbe es da die Möglichkeit JavaScript dafür zu nehmen - hier ein Beispiel:

Code:
tell application "Safari"
   make new document
   set newWin to window 1
   tell document of newWin
      set URL to "http://www.google.de/advanced_search?hl=de"
   end tell
   delay 2
   do JavaScript "document.forms.f.as_q.value = \"Supermodel\"" in (document of newWin)
   do JavaScript "document.forms.f.as_epq.value = \"Cindy Crawford\"" in (document of newWin)
   
   do JavaScript "document.forms.f.as_eq.value = \"ugly\"" in (document of newWin)
   do JavaScript "document.forms.f.num.value = \"30\"" in (document of newWin)
   do JavaScript "document.forms.f.lr.value = \"lang_es\"" in (document of newWin)   
   
end tell


Das Schema ist immer so:
Code:
do JavaScript "document.forms.<name_des_formulars>.<name_der_variablen>.value = \"<wert>\"" in <safari-dokument>


ansonsten könntest du ein Formular auch mit System Events ausfüllen - z.B. so:

Code:

tell application "Safari"
   make new document
   set newWin to window 1
   tell document of newWin
      set URL to "http://www.google.de/advanced_search?hl=de"
   end tell
   delay 2
end tell
tell application "System Events"
   tell process "Safari"
      set frontmost to true
      keystroke "Supermodel"
      keystroke tab
      keystroke tab
      keystroke tab
      keystroke tab
      keystroke "Cindy Crawford"
      keystroke tab
      keystroke tab
      keystroke "ugly"
   end tell
end tell


aber vielleicht brauchst du ja das alles nicht und kannst die passwortgeschützte Seite direkt so ansteuern:

Code:
set theUser to "user"
set thePass to "password"
tell application "Safari"
   make new document
   set newWin to window 1
   tell document of newWin
      set URL to "http://" &theUser & ":" & thePass & "@www.passwordprotectedSite.com/protectedArea/"
   end tell
end tell


Grüße,

Daisy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
wiso
•-->
•-->


Anmeldedatum: 05.09.2006
Beiträge: 25

BeitragVerfasst am: 16.09.2006 - 18:05    Titel: Antworten mit Zitat

hallo daisy,
danke für die tips. kann ich bei der version mit den system events auch die "klappmenüs" (...30 ergebnisse) betätigen. oder einen button und eine checkbox?

bei dem java-script beispiel verstehe ich nämlich nicht wie du die unterschiedlichen felder ansteuerst?

do JavaScript "document.forms.f.as_q.value = \"Supermodel\"" in (document of newWin)
do JavaScript "document.forms.f.as_epq.value = \"Cindy Crawford\"" in (document of newWin)


da unterscheidet sich das erste feld "_q.value" vom zweiten "_epq.value" ?

mfg,
wiso
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
wiso
•-->
•-->


Anmeldedatum: 05.09.2006
Beiträge: 25

BeitragVerfasst am: 16.09.2006 - 20:59    Titel: Antworten mit Zitat

hi nochmal,
lassen wir das mit dem java-script. ich komme mit den system events ganz gut zurecht.
in den "klapp-menüs" kann ich auch navigieren. key code 125 (page down) für die listenauswahl und mit key code 36 (enter) das element auswählen.

nur wenn ich auf der seite irgendwo einen "knopf" (speichern, neu...) habe den ich mit tab nicht erreiche - wie kann ich den drücken?

danke,
mfg,
wiso
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Daisy
•-->
•-->


Anmeldedatum: 26.04.2002
Beiträge: 79

BeitragVerfasst am: 16.09.2006 - 22:01    Titel: Antworten mit Zitat

wiso hat Folgendes geschrieben:
hi nochmal,
lassen wir das mit dem java-script. ich komme mit den system events ganz gut zurecht.
in den "klapp-menüs" kann ich auch navigieren. key code 125 (page down) für die listenauswahl und mit key code 36 (enter) das element auswählen.

nur wenn ich auf der seite irgendwo einen "knopf" (speichern, neu...) habe den ich mit tab nicht erreiche - wie kann ich den drücken?

danke,
mfg,
wiso


Hi wiso,

einen 'knopf' (=button?) kannst du mit tabs ansteuern, bis er gehighlited ist und dann drückst ihn mit return.

Aber prinzipiell tät' ich dir doch JavaScript ans Herz legen, denn das arbeitet genauer (funktioniert z.B. auch noch wenn auf der angesteuerten Website mal ein Formularfeld dazukommt oder sich in der Reihenfolge was ändert).

Vielleicht war ja mein Beispiel mit Google blöd gewählt, da der Quelltext sehr unübersichtlich ist.

Hier nochmal ein paar Scriptzeilen, mit dem du ein Antwortformular von fischer-bayern bearbeiten kannst:

es füllt zwei Textfelder aus, wählt zwei menüpunkte, setzt zwei Checkboxen und clickt den 'Vorschau'-Button. Schau dir den Quelltext der Seite dazu an (Apfel-Option-U) Das Formular hier heisst 'post':

Code:
tell application "Safari"
   make new document
   set newWin to window 1
   tell document of newWin
      set URL to "http://www.fischer-bayern.de/phpBB2/posting.php?mode=quote&p=10654"
   end tell
   delay 3
   
   do JavaScript "document.forms.post.subject.value = \"Antwort\"" in (document of newWin)
   
   
   do JavaScript "document.forms.post.message.value = \"Das ist der Text\"" in (document of newWin)
   
   do JavaScript "document.forms.post.addbbcode18.value = \"red\"" in (document of newWin)
   do JavaScript "document.forms.post.addbbcode20.value = 18" in (document of newWin)
   
   
   do JavaScript "document.forms.post.disable_smilies.checked = true" in (document of newWin)
   
   do JavaScript "document.forms.post.notify.checked = true" in (document of newWin)
   do JavaScript "document.forms.post.preview.click()" in (document of newWin)
end tell
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
wiso
•-->
•-->


Anmeldedatum: 05.09.2006
Beiträge: 25

BeitragVerfasst am: 17.09.2006 - 21:21    Titel: Antworten mit Zitat

hallo daisy,
ich weiss nicht wie ich die den "namen des formulars" und vor allem den "namen der variablen" finden soll.

ich finde sie zwar teilweise im quelltext beider beispiele (google+fischer). aber auch nur weil ich durch deine scripts schon weiss wonach ich suchen muss.

nach welchem system muss ich suchen?

danke für deine mühe,
mfg,
wiso
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Daisy
•-->
•-->


Anmeldedatum: 26.04.2002
Beiträge: 79

BeitragVerfasst am: 17.09.2006 - 22:45    Titel: Antworten mit Zitat

wiso hat Folgendes geschrieben:
hallo daisy,
ich weiss nicht wie ich die den "namen des formulars" und vor allem den "namen der variablen" finden soll.

ich finde sie zwar teilweise im quelltext beider beispiele (google+fischer). aber auch nur weil ich durch deine scripts schon weiss wonach ich suchen muss.

nach welchem system muss ich suchen?

danke für deine mühe,
mfg,
wiso


Hi wiso,

alle diese interaktiven Form-Elemente wie Textfelder, Checkboxen, Buttons etc. stehen innerhalb von Form-Tags - das sieht so aus:

<form action="posting.php" method="post" name="post" onsubmit="return checkForm(this)">

...*

</form>

hier findest du also den Namen des Formulars (name="...")

*und dann sind dazwischen die einzelnen Elemente definiert - die tauchen im Quellcode in der Reihenfolge auf, wie sie auf der Seite mit der Tabulator-Taste nacheinander aktiviert werden können.

Das sieht z.B. für ein Textfeld so aus:
<input type="text" name="subject" size="45" maxlength="60" style="width:450px" tabindex="2" class="post" value="" />

oder für einen Button z.B. so:
<input type="button" class="button" accesskey="b" name="addbbcode0" value=" B " style="font-weight:bold; width: 30px" onClick="bbstyle(0)" onMouseOver="helpline('b')" />

oder für eine Checkbox z.B. so:
<input type="checkbox" name="disable_bbcode" />

Die haben auch ein name="...". Damit kannst du sie dann ansteuern.

Bei Menüs gibt es dann zusätzlich noch eine Liste der Menüelemente - das schaut z.B. so aus:

Code:
<option style="color:black; background-color: #FAFAFA" value="#444444" class="genmed">Standard</option>
<option style="color:darkred; background-color: #FAFAFA" value="darkred" class="genmed">Dunkelrot</option>
<option style="color:red; background-color: #FAFAFA" value="red" class="genmed">Rot</option>
<option style="color:orange; background-color: #FAFAFA" value="orange" class="genmed">Orange</option>
...

du suchst da einfach den Wert (value="...") für den Menüpunkt aus, den du aktivieren möchtest.


Und wenn dir das zu nervig ist oder ein Feld mal keinen (eindeutigen) Namen hat ... es gibt noch eine andere Möglichkeit:

Du kannst alle Elemente auch über Indexnummern auswählen. Gezählt wird begginend mit der 0 - Unterteilt nach Forms und deren Elements. Für das 'Subject'-Feld im Fischer'schen Antwortformular könntest du auch schreiben:

Code:
do JavaScript "document.forms[0].elements[0].value = \"Antwort\"" in (document of newWin)


Das ist also das erste Formular (=forms[0]) und darin das erste Element (elements[0]))[/code]

Soviel zur grauen Theorie. Hier noch ein kleines Applescript, das die Arbeit vielleicht etwas erleichtert - einfach die zu bearbeitende Seite in Safari öffnen und dann Script laufen lassen - es erstellt eine List mit allen Forms & Elements:

Code:
tell application "Safari"
   set theResult to ""
   set forms to (do JavaScript "document.forms.length" in document 1)
   repeat with form from 0 to (forms - 1)
      set elements to (do JavaScript "document.forms[" & form & "].elements.length" in document 1)
      repeat with elem from 0 to (elements - 1)
         set theResult to theResult & "Form " & form & " Element " & elem
         set theResult to theResult & " Name=\"" & (do JavaScript "document.forms[" & form & "].elements[" & elem & "].name" in document 1) & "\""
         set theResult to theResult & " Type=\"" & (do JavaScript "document.forms[" & form & "].elements[" & elem & "].type" in document 1) & "\""
         set theResult to theResult & return
      end repeat
   end repeat
   
end tell
tell application "TextEdit"
   activate
   set a to make new document
   set text of a to theResult
end tell


Grüße,

Daisy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
wiso
•-->
•-->


Anmeldedatum: 05.09.2006
Beiträge: 25

BeitragVerfasst am: 18.09.2006 - 18:23    Titel: Antworten mit Zitat

hi daisy,
wesesentlich eleganter ist es mit javascript allemal. ich mache es jetzt mit den formular- und feldnummern, das funktioniert (weil ich den formularnamen trotz allem nicht gefunden habe...).

wenn ich die zwischenablage als wert (.value=) übergeben will? muss ich wahrscheinlich mit einer variablen machen. wie definier ich die in javascript?

danke nochmal für die scripts
mfg,
wiso
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Daisy
•-->
•-->


Anmeldedatum: 26.04.2002
Beiträge: 79

BeitragVerfasst am: 18.09.2006 - 23:32    Titel: Antworten mit Zitat

wiso hat Folgendes geschrieben:
wenn ich die zwischenablage als wert (.value=) übergeben will? muss ich wahrscheinlich mit einer variablen machen. wie definier ich die in javascript?


Hi wiso,

die Variable musst du eigentlich gar nicht in JavaScript definieren - du kannst das wie folgt machen, dann ist das einfach eine AppleScript-Variable im JavaScript-Text:

Code:
tell application "Safari"
   set thePastedValue to the clipboard as string
   do JavaScript "document.forms[0].elements[0].value = \"" & thePastedValue & "\"" in (document 1)
end tell


Grüße,

Daisy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dersudom
•->
•->


Anmeldedatum: 03.01.2017
Beiträge: 1
Wohnort: Asperg

BeitragVerfasst am: 03.01.2017 - 14:31    Titel: Antworten mit Zitat

Halo,
euere Unterhaltung war für mich sehr hilfreich nur jetzt stehe ich vor einem Problem.

Es handelt sich um Textarea die mit Zeilenumbüchen formatiert werden soll. wenn ich jedoch JavaScript Umbruch einfüge, funktioniert das leider nicht.
also mit dem hier: "\n"
Kann mir jemand weiter helfen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter