Piszę sobie pewnego bota z wykorzystaniem selenium i mam problem. Zmieniłem obsługę ctrl+c by zamiast podnosić KeyboardInterrupt, ustawiał flagę do do bezpiecznego wyjścia ze skryptu. Wszystko by było elegancko, gdyby przeglądarka nie zamykała się natychmiast po wciśnięciu ctrl+c. Reszta działa tak jak powinna. Jakiś pomysł jak to rozwiązać? Win10, python 3.8 najnowszy chromedriver. Na stacku szukałem, za dużo tam nie było - uruchomić chromedriver z osobnego cmd i korzystać z webdriver.remote, ale wolałbym rozwiązanie bardziej eleganckie.
@vanrzuf: a jak olejesz zamknięcie skryptu poprzez driver.close lub quit? problem moze byc tylko taki, że sie nie do końća wyczyści co tam skrypt sobie narzeźbił. ale to by trzeba było sprawdzić, bo może po zamknięciu przegląarki manualnie to sie wyczyści (skoro pzegląarka ejst uruchomiona przez webdrivera)
@daczka92: Zamknięcie przeglądarki ręcznie, kończy się tak samo jak wciśnięcie ctrl+c - skrypt się wywala bo przeglądarka jest niedostępna. Cały szkopuł w tym, że przeglądarka jest mi potrzebna do czystego wyjścia ze skryptu. Ctrl+c ustawia flagę, którą sprawdzam na końcu każdej pętli (niektóre też na początku).
@vanrzuf: nie zrozumiales mnie, skończyc skrypt i nie dawać na końcu driver.close lub driver.exit, wtedy powinna przeglądarka zostać. problem moze byc taki ze jak skrypt sie zamknie, a przeglądarka zostanie bo nie dałeś driver.close albo driver.exit to może zostaś sporo śmiecia w pamięci komputera bo się nie oczyści. sprawdzić by trzeba było, czy po wtedy jak już sprawdzisz co masz sprawdzić i zamkniesz przeglądarkę to czy się nie oczyści bo
@daczka92: To się obaj nie zrozumieliśmy :D W sumie to moja wina, bo nie napisałem dokładnie - skrypt sam w sobie ma działać w pętli ciągłej. Tylko i wyłącznie kiedy dostanie sygnał ode mnie ma z tej pętli wyjść. Przeglądarka ma się zamknąć na końcu skrypt
from selenium import webdriver import Engine import SafeExit
@vanrzuf: najlepiej to na pastebin wrzucać. kurde to nie pomogę, trochę nie czaję a ja z selenium to robilem zwykle testy gdzie po zakończeniu miało się wszystko pozamykać, a nie chodzic w pętli. ale chesz zeby ta przeglądarka się zamknęłą czy nie? bo w pierwszym poście piszesz ze Cie to wkurza ze ona sie od razu zamyka
@daczka92: Przeglądarka ma się zamknąć gdy w kodzie dojdzie do browser.close(). Żeby doszło do browser.close() muszę przerwać główną pętlę w Engine.update(). Główna pętla w Engine.update() przerywa się z początkiem następnej iteracji gdy zmienna SAFEEXIT zmieni wartość z False na True, pozwala to czysto zakończyć bieżące zadania bez utraty zebranych informacji. SAFEEXIT zmienia wartość z False na True gdy wcisnę Ctrl+c, a zmienia ją bo tak ustawiłem dzięki modułowi
Piszę sobie pewnego bota z wykorzystaniem selenium i mam problem. Zmieniłem obsługę ctrl+c by zamiast podnosić KeyboardInterrupt, ustawiał flagę do do bezpiecznego wyjścia ze skryptu. Wszystko by było elegancko, gdyby przeglądarka nie zamykała się natychmiast po wciśnięciu ctrl+c. Reszta działa tak jak powinna. Jakiś pomysł jak to rozwiązać? Win10, python 3.8 najnowszy chromedriver. Na stacku szukałem, za dużo tam nie było - uruchomić chromedriver z osobnego cmd i korzystać z webdriver.remote, ale wolałbym rozwiązanie bardziej eleganckie.
sprawdzić by trzeba było, czy po wtedy jak już sprawdzisz co masz sprawdzić i zamkniesz przeglądarkę to czy się nie oczyści bo
from selenium import webdriverimport Engine
import SafeExit
tutaj lepiej widać
https://i.imgur.com/DgpvZVY.png
https://i.imgur.com/9iyyNFg.png
ale chesz zeby ta przeglądarka się zamknęłą czy nie? bo w pierwszym poście piszesz ze Cie to wkurza ze ona sie od razu zamyka