Python działania w przeglądarce - oszczędzenie czasu czy się da

0

Kolejna sprawa małego kalibru z którą nie mogę sobie poradzić, tzn mam rozwiązanie ale chciałbym usprawnić działanie mojego programiku.

W czym tkwi problem:

Napisałem sobie program który wykonuje jakieś tam akcje na stronie www z grą, wciska przyciski i tak dalej ale potrzebuje też przelogowywać się a więc strona się przeładowuje.

Aby nie mieć problemów z wywaleniem błędu bo program nie znajduje przycisku na stronie to po każdej komendzie daje mu time.sleep(10) aby poczekał 10 sekund na całkowite załadowanie się strony. Program oczywiście działa jednakże jest to wielkie marnotractwo czasu gdy za każdym razem program czeka 10 sekund a strona ładuje się np. po 2 sekundach.

Czy jest jakiś skrypt albo framework do pythona który będzie wiedział kiedy strona będzie już w pełni wczytana i da znać aby wykonywać dalsze polecenia? Może ktoś ma jakiś pomysł jak to ogarnąć?

1

Mozesz sprobowac np robobrowser jesli nie potrzebujesz javascriptu
Albo bezposrednie requesty http
Albo selenium

PS: obys bana dostal za boty :p

0

Haha dzięki ale bana nie będzie bo to moja własna gra :D dużo rzeczy do testowania i kilka godzin trzeba klikać to samo żeby na wielu kontach posprawdzać, spróbuję ale nie wiem czy zadziała, potrzebuje zaimplementować to w pythona nie wiem czy dam rade :P może jakiś kod pomocny?

0

Emmmm

A to jakies testy [jednostkowe] nie powinny tutaj byc?
Na prawde to wymaga manualnego klikania? Mysle ze powinienes otestowac kod

0

na razie nie wychodze tak daleko w przestrzen, probuje poradzic sobie z tym a dopiero pojde dalej ;p

0

Niestety wymaga to klikania, zeby zaoszczedzic czas to nie chce aby skrypt czekal 10 sekund bo w tym czasie na pewno cala strona sie zaladuje tylko wykonywal dalej kod gdy strona bedzie juz zaladowana, czasem sa to 2 sekundy a czasem 6-7 sekund dlatego kazalem mu czekac 10 :D

0

Rozumiem ze nie ma jakiegos prostego rozwiazania na ten problem :P?

0

Obczaj sobie projekt splash - coś w rodzaju skryptowalnej przeglądarka (język Lua). W tej odpowiedzi ze Stacka masz przykład skryptu, który czeka aż wybrany element strony się załaduje.

0
Spearhead napisał(a):

Obczaj sobie projekt splash - coś w rodzaju skryptowalnej przeglądarka (język Lua). W tej odpowiedzi ze Stacka masz przykład skryptu, który czeka aż wybrany element strony się załaduje.

W przegladarkach mozna skryptowac normalnie JSem wiec nie trzeba jakiejs egzotyki

0

Czemu python? Cypress robi takie rzeczy z automatu.

0

Bo program mam w Pythonie napisany a poza tym staram się poszerzyć swoją wiedzę w tym języku jednocześnie tworząc różne programy jak ten :-) zastanawiałem się czy nie mógłbym wykorzystać do tego też pyautogui tylko nie wiem jak stworzyć taka pętle działająca muszę po pracy pokombinować.

Każda zakładka www obok nazwy ma swoje logo, może zrobić tak że pyautogui szuka danej ikony i jeśli nie ma to czeka sekundę i znowu szuka a jak znajdzie to jedzie dalej z kodem. Dobry pomysł??

0

Kuźwa może ktoś mi pomóc ogarnąć ten skrypt do wyszukiwania przycisku i dopiero żeby działał dalej program?

Chcę aby od razu po kliknięciu na stronie jakiegoś przycisku szukał następnego w pętli ale w ogóle nie wiem jak to zrobić....

1

Napisz unit testy kodu to sie nie bedzie trzeba j***c z problemami typu interakcja z przegladarka ;)
Bo przy takiej probie jeszcze nie zaczales testowac wlasciwej aplikacji a juz masz problem

Albo ogarnij to selenium

0

Ha! Wiedzialem ze uda sie ogarnac to w samym pythonie :D

Dla zainteresowanych, funkcja zwraca wartosc "None" jesli nie znajdzie obrazka. Wypadalo wiec tylko ogarnac ze jesli nie znalazlo to powtarza dopoki nie znajdzie.

Oto kod:

location = None
while (location == None):
    try:
        location = pyautogui.locateOnScreen(obrazek.jpg)
    except Exception as e:
        print(e)

Proste dzialanie, stronka sie laduje a petla juz dziala i dopoki nie pokaze sie obrazek z przyciskiem ktory chcemy kliknac to bedzie sie powtarzac az znajdzie, jest to mega dobre bo od razu po zaladowaniu strony przycisk zostaje znaleziony :D brawo internet! brawo python! temat do zamkniecia ;)

0

@Rafiks1992: Selenium ma coś co mogłoby Cię zainteresować:

https://selenium-python.readthedocs.io/waits.html - definiujesz sobie na jaki element przeglądarka ma oczekiwać i jaki jest timeout.

0

Nie mogłem sobie z tym selenium poradzić, trochę wstyd się przyznać ale poszedłem w inną stronę i udało się to inaczej zalatwic. Chciałbym znać też jak ogarnąć to z tym selenium przydałoby się może to kiedyś :-)

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