Wypełnianie formularzy na stronach

0

Witam,

Jak można zrobić automatyczne wypełnianie formularzy na innych stronach?
Przykładem działania może być program Sprytne Katalogownie. Otóż definujemy tam wartości dla różnych pól (email, tytul, opis) i po otwarciu strony w tym programie (silnik IE) np formularza dodania strony do katalogu, pola mają już wypełnione wartości.

Myśle, że technologia nie ma tutaj większego znaczenia a chodzi jedynie o zasadę działania.

Czy strona jest pobierana i potem parsowna i wstawiane dane czy jakoś inaczej?

// istnieje chyba tez wtyczka do FF ktora potrafi wypelniac zdefiniowane pola

0

zrób sobie klienta HTTP i wysyłaj wypełnione formularze =)

0

Nie chodzi o wysyłanie formularza a jedynie o wypełnienie go. Samo wysłanie jest banalne (wysłanie opowiednią metodą danych na action formularza)

Nikt nie doradzi jak to działa...?

0

ee niezbyt, program by musiał wyrwać z przeglądarki listę wszystkich pól ( ich wskaźniki czy coś ) a potem ustawiać w nich tekst, takie coś ?

0

Potwoor_, nie chcę być niegrzeczny, ale gadasz głupoty...

A tak nawiasem mówiąc to nie jest wcale nietuzinkowy temat!

Nie chce mi się sprawdzać co to za "Sprytne Katalogownie", ale zakładam, że chodzi Ci o sytuację, kiedy masz przeglądarkę wbudowaną w program i to program wypełnia formularz zapamiętanymi danymi.

To co napiszę to jest tylko zarys, i można go obracać na dziesiątki sposobów, żeby dostosować do siebie:

  1. budujesz program z użyciem webbrowsera i jakąś prostą bazą na zapamiętywanie haseł
  2. łączysz się ze stroną powiedzmy http://4programmers.net/ucp.php?mode=login - prosty formularz
  3. Po wpisaniu swoich danych oczywiście klikasz na logowanie
  4. W tym momencie możesz obsłużyć w swojej aplikacji zapamiętywanie wprowadzonych danych używając zdarzenia NavigateComplete2 komponentu webbrowser
  5. Odczytujesz url i postdata - rozkodowujesz do takiej postaci, zeby zapamiętać, że dla url-a takiego a takiego zostały użyte takie dane...

dla url: http://4programmers.net/ucp.php?mode=login
mam zapamiętane dane
login = mojlogin
password = mojehaslo

Jak mam już zapisane dane do zapamiętania, mogę się zająć ich wstawianiem na stronę:

  1. w zdarzeniu NavigateComplete2 komponentu webbrowser odczytujesz z jaką stroną się połączyłeś i czy taki adres jest już w twojej bazie - jeśli nie ma nic nie robisz, jeśli jest to np. http://4programmers.net/ucp.php?mode=login to odczytujesz przypisane mu w bazie dane i próbujesz je dopisać do strony.
  2. wykonujesz
  • WebBrowser.OleObject.Document.login.value = zapamietany_login;
  • WebBrowser.OleObject.Document.password.value = zapamietany_login;
  1. Masz wpisane zapamiętane dane w formularz...

BTW: dla malkontentów - pisane z głowy ma pokazać ideę takiego rozwiązania. Zalecane sprawdzenie dokumentacji przed użyciem i uzupełnienie o rzeczy, które być powinny, a ich nie ma ;)

I polecam:
TWebBrowser i przyjaciele
Przeglądarka internetowa (TWebBrowser) dla początkujących

0

Dzięki za pomoc. Ale zrobiłem zanim dostałem informację (chociaż te i tak się przydadzą)

Oczywiście wykorzystuję TWebBrowser ale wcześniej mam zdefiniowane name dla pól i ich wartości. Za pomocą odpowiednich metod pobieram wszystkie inouty z wczytanej strony i jeśli któryś ma taką nazwę jak przeze mnie zdefiniowane wstawiam mu wartość.

0

I tak można - tak jak napisałem "to jest tylko zarys, i można go obracać na dziesiątki sposobów, żeby dostosować do siebie" :)

0

no to pisałem na początku żeby zrobić klienta HTTP ...

0

Najłatwiej użyć programów typu Greasemonkey(dla FF) lub http://www.reifysoft.com/turnabout.php (dla IE)

Tutorial dla FF:

  1. Instalujemy Greasemonkey (Aby działał w FF3, musisz zrobić mała zmianę - instrukcję masz w pierwszym komentarzu tu: https://addons.mozilla.org/pl/firefox/addon/748#reviews )
  2. Tworzymy plik "test.user.js" i wpisujemy:
function fillNames(){
    var els = document.getElementsByTagName("input");
    for (var i = 0; i < els.length; i++) { 
         var e = els[i];
         if (e.getAttribute("name") == "name"){
              e.value ="Józek";
         }
   }
}

fillNames()
  1. W FF wybieramy Plik->Otwórz plik... i otwieramy nasz plik "test.user.js". Po chwili klikamy instaluj.

  2. Tworzymy przykładową stronę:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  </head>
  <body>
  <form action=".">
      <label for="name">Nazwa:</label>
      <input type="text" name="name"/>
      <label for="name">Haslo:</label>
      <input type="password" name="password"/>
    </form>  
  </body>
</html>
  1. Otwieram w FF naszą stronę. W polu name powinniśmy mieć wpisane "Józek"

Więcej informacji:
http://en.wikipedia.org/wiki/Greasemonkey

0

Dzięki:) Też sposób tylko, że potrzebowałem aby to robił program, zeby obsługa była prostsza i możliwa dla kazdego użytkownika programu.

0 użytkowników online, w tym zalogowanych: 0, gości: 0