Lazarus i sterowanie domyślną przeglądarką

0

Czy ktoś może podpowiedzieć, czy istnieje jakaś (jaka?) biblioteka procedur do sterowania domyślną przeglądarką? Chodzi mi o otwarcie przeglądarki, wypełnianie formularzy (np. logowanie), wybieranie linków, kod jest w HTML, to nie są jakieś graficzne aplikacje typu gry. Szukam dokumentacji najlepiej z prostymi przykładami. Pozdr.

0
furious programming napisał(a):

Create a web browser in 3 minutes using Chromium engine! (fpCEF3) – przeczytaj.

Przeczytałem. Jest to jakieś rozwiązanie, o którym myślałem, żeby skorzystać z przeglądarki z Lazarusa i wrócę do tego, jeżeli nie uda mi się znaleźć sposobu, by dostać się do istniejącej przeglądarki (np. Firefox) jaka jest na danym komputerze. Podany przykład niestety nie rozwiązuje moich pytań dotyczących wyszukiwania w okienku linków, wypełniania formularzy i aktywowania ich ani odczytywania danych.

1

Nie wiem, czy akurat do Lazarusa, ale często są biblioteki umożliwiające osadzenie przeglądarki w swojej aplikacji, myślę, że tak najlepiej jest podejść do problemu. Do tego musisz doczytać, jak dopisać i uruchomić funkcję JavaScript. W każdej bibliotece osadzającej przeglądarkę będzie inaczej, czasem trzeba pokombinować, żeby jakiś JavaScript dopisać (modyfikacja kodu strony), a potem uruchomić.

Jak otworzysz swoją stronę z formularzem w osadzonej przeglądarce i opanujesz dopisywanie kodu i uruchamianie JavaScript, to masz połowę sukcesu. Czy formularz to jest Twoja strona, czy obca? Jeżeli Twoja, to proponuję w niej dopisać potrzebne funkcje JavaScript, wtedy nie będziesz musiał ich dopisywać ad hoc po uruchomieniu strony.

Wypełnianie i zatwierdzanie formularza może odbywać się poprzez wywoływanie funkcji JavaScript, gdzie w parametrach przekazujesz dane do wpisania. Może być jedna funkcja, która wypełni cały formularz, a może być osobna funkcja do każdego pola, od strony technicznej to żadna różnica, sam zdecyduj, jak wolisz.

Jeżeli chcesz uruchamiać swój program na różnych komputerach z MS Windows, to najlepiej jest osadzić przeglądarkę Internet Explorer, bo ona zawsze jest. Oczywiście sprawdź, czy przedmiotowa strona z formularzem działa poprawnie w IE.

2

Osadzenie zewnętrznej przeglądarki w swoim programie nie jest jakimś dużym problemem (ostatnio było na forum jak osadzić program wewnątrz innego) ale dostanie się do niej to już inna bajka. Niestety przeglądarki działają w trybie sandbox i taka praca w zasadzie uniemożliwia ingerencję z zewnątrz. Rozwiązanie to dopisania rozszerzenia do przeglądarki i komunikacja z nim jako pośrednikiem.
Chyba nie jest to jednak dobra droga.

W Delphi (no i siłą rzeczy Windows) - nie mam pojęcia jak wygląda to w Linuksach - lepszym rozwiązaniem jest komponent WebBrowser (czyli tak naprawdę osadzony rdzeń Internet Explorera) i manipulowanie nim po stronie www. Uwaga: jest też Chromium jako komponent o czym wspomniał @furious programming i zapewne będzie działał w sposób zbliżony ale także pod Linuksami - nie testowałem.

Wracając do sedna jeśli chodzi o Delphi, oczywiście jest warunek - strona musi działać w IE. Jest to dość ważne na serwerach gdzie reguły bezpieczeństwa są dużo bardziej restrykcyjne niż na zwykłych komputerach i trzeba to sprawdzić.

No dobrze, mamy już nasz program, mamy osadzony komponent WebBrowser (nie musi być widoczny).
Jak coś wpisać do formularza, proste:

WebBrowser1.OleObject.Document.GetElementById('b-7').Value := 'coś do wpisania';

a jak kliknąć w przycisk na formularzu, też proste:

WebBrowser1.OleObject.Document.GetElementByID('b-8').Click;

a jak coś odczytać ze strony:

zmienna_tekstowa := WebBrowser1.OleObject.Document.GetElementById('b-3').innertext;

Jak widać jest to dość proste, chociaż jest pewien problem. Nie zawsze programiści webowi nazywają elementy na stronie i wtedy (przynajmniej ja jako totalny lamer jeśli chodzi o technologie webowe) nie wiem jak się do nich dobrać. Tu było proste, b-7, b-8 itp rozwiązało mój problem.
A dla ciekawych, są to linie z mojego programiku do sprawdzania w bazie Ministerstwa Finansów statusu płatnika w VAT. Pisałem to w czasie gdy nie było żadnego API a klient koniecznie potrzebował takiego rozwiązania. O dziwo działa to do dzisiaj.

0
docXX napisał(a):
furious programming napisał(a):

Create a web browser in 3 minutes using Chromium engine! (fpCEF3) – przeczytaj.

Przeczytałem. Jest to jakieś rozwiązanie, o którym myślałem, żeby skorzystać z przeglądarki z Lazarusa i wrócę do tego, jeżeli nie uda mi się znaleźć sposobu, by dostać się do istniejącej przeglądarki (np. Firefox) jaka jest na danym komputerze. Podany przykład niestety nie rozwiązuje moich pytań dotyczących wyszukiwania w okienku linków, wypełniania formularzy i aktywowania ich ani odczytywania danych.

Jak znajdziesz taką bibliotekę, która obsługuje wszystkie przeglądarki, to chętnie się z nią zapoznam.
Ale jeśli nie chcesz mieć większych problemów, to powinieneś zdecydowanie rozważyć, aby dostarczyć np. taki Chromium ze swoim programem i zaprząc go to tej pracy.

0

@robertz68:

Dzięki :) Rzeczywiście, chyba wezmę jak furious napisał komponent chromium i spróbuję się dostać do stron poprzez coś na kształt GetElementById, na szczęście na tej stronie wszędzie są Id.

@wloochacz:

Dzięki za odpowiedź. Rzeczywiście chromium to będzie najlepsze wyjście.

@andrzejlisek:

Niestety to obca strona, do której muszę się logować i zapisywać z niej dane. :( Ale spróbuję osadzić browser chromium i się dostać do niego przez JavaScript. Pozdr.

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