Dobrý večer, snažím se udělat program který bude schopen připojit se na prohlížeč který byl spuštěn uživatelem abych zpřístupnil záložky které by uživatel běžně prohlížel. Používám Selenium knihovnu, která je pro tohle určena. Co se mi podařilo:Mohu se připojit na prohlížeč, který je zapnut tímto příkazem:"c:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --remote-debugging-port=9244 --user-data-dir="C:\Users\user\OneDrive\Plocha\záložky\msedge1" Příkaz musí mít specifikovanou uživatelskou složku která by měla být jinačí než základní (základního uživatele C:\Users\user\AppData\Local\Microsoft\Edge\User Data). Jinak můj program funguje stejně jako kdyby user data nebyly specifikovány. Co se mi nedaří: Cílem je získat přístup k prohlížeči který byl spušten manuálně. (k jeho záložkám). O co jsem se pokusil je že jsem z příkazu: netstat -AB našel procesy s názvem msedge.exe.… Vzal jsem si IP adresu, port a vložil je do mého programu. Toto je jeho výsledek: https://i.stack.imgur.com/mGL4d.pngZde je můj program: import seleniumfrom selenium import webdriverfrom selenium.webdriver.edge.options import Optionsfrom selenium.webdriver.edge.service import Serviceedge_options = Options()edge_options.add_experimental_option("debuggerAddress","127.0.0.1:55718")edge_options.use_chromium = Trues=Service('C:/Users/WDAGUtilityAccount/Downloads/edgedriver_win64/msedgedriver.exe')driver = webdriver.Edge(service = s, options = edge_options)print(driver.title)Prosím poraďte, děkuji :) Ukázat celý příspěvek
PS: Část Erroru je že se nemůže připojit na Microsoft Edge na dané IP adrese.
Podla mna sa to neda.Ten webdriver si sam spusta svoju instanciu/okno/prehliadac a len nad tym potom pracuje.To jest nevie ovladat okno otvorene inym uzivatelom ale len to ktore si sam spusti.Najprv. musi webdriver otvorit prehliadac, tam mozete ak chcete manualne nieco vyklikat a WD si max.pocka na nejaku udalost napr.na zobrazenie tlacitka, textu, elememtu a pod a potom pokracuje dalej.WD Je urceny na automatizovane testovanie a nie na ucel na ktory ho chcete vyuzit.Hladajte nieco ine.
Zase minuskuju co o tom nemaju ziadnu sajnu, co.v tom nikdy nerobili a mozno ani o tom ani nepoculi. Nepojde to a to som.so skoro na 100 perc isty.
Kámo, s webdriverem dělám cca 8 let, tak si klidně hledej způsob a ztrácej čas 😀
Tohle nejde. Logicky. Webdriver je zabezpečen, aby takto hackovat nešlo. Zkoušel jsem i kdysi rozjet např. přihlášení ke Google accountu, s pomocí uložených souborů, ale i tohle už není podporováno. Jak již tady bylo zmíněno, webdriver spouští session prohlížeče v "automatizačním" módu, který se od klasického liší.
A jakým způsobem se od sebe liší ?
Ze WD bezi izolovane od zvysku (od browserov spustenych manualne)= bezi ako keby v Sandboxe. Lebo to tak nakodilo a pre ucel na ktory je urceny to tak vyhovuje.
Platí automatizační mód prohlížeče který je zapnutý přes můj příkaz ?
Ano, vsetko cez kod WD/Selenium bezi len cez ten mod izolovane od zvysku systemu.Treba hladat SW//program/modul, ktory dokaze pracovat s hocijakym oknom aj s takym, ktore sam predtym nespustil. A vie si ho dohladat napr.podla nazvu okna a pod.
To znamená že web driver nebo slenium dokáže hledat okna podle názvu ?
Ano, ale len take co ten WD otvoril alebo v danej instancii vyskocili ako pop up a pod.Ale uz to vzdavam.
Tím pádem nechápu proč se na githabu Seleniua baví o tom že by bylo dobré volit si mezi sessions? https://github.com/seleniumhq/sel.../issues/18
Su to min.3 rozne veci - Selenium, WD, EdgeDriver. Zial bolo to navrhnute inak a s takym niecim sa pri navrhu od zaciatku nepocitalo a uz to tam nie je mozne plnohodnotne dorobit. Tak spravili aspon experimentalmy Workaround. Ten som vam popisal po lopate nizsie tak aby ste sa v tom nestratili.Okrem toho - nikto z nich nepotrebuje pracovat s oknom, ktore nesputil WD.Vsetci z nich potrebuju pokracovat v okne, ktore spustil priamo WD a chcu pokracovat priamo tam, kde ten skript z nejakeho dovodu/chyby v skripte zastal (nenasiel nejaky element - napr..kvoli preklepu atd).Naco by si niekto otvaral manualne nejake okno a preklikaval sa niekam manualne az na koniec kde mu ten skript predtym spadol, Ked si ten skript (aj chybny) moze spustit znova a zastane mu presne tam kde chce pokracovat. Manualne by im to trvalo ovela dlhsie.Vsetci chcu usetrit cas kedy im ten skript bezi od zaciatku, pripadne nechcu skript znova… krmit jedinecnymi datami, tam kde su po spusteni nutne vzdy ine jedinecne hodnoty - napr.rodne cislo a pod.Je to nastroj na testovanie.Museli by tie moduly/kniznice/API prerobit od nuly aby vam vyhoveli. Ukázat celý příspěvek
https://www.tutorialspoint.com/how-to-connect...webdriver#Tu je priklad co sa snazis.ale nepomoze ti to.Pre istotu ti to.vysvetlimJe tam 5 obr.1 browser - len uvod2 debug3 browser4 debug5 browserA 2x kod1 obr - len demonstruje co.budeme robit = otvarat stranku, dopisovat do vyhladavcieho pola.Realne ale s tymto konkretnym oknom nic robit nebudeme1 kod - spusta browser, zaloguje locathost ID, pod ktorym to okno eviduje WD, otvori stranku, doplni do vyhladavacieho pola text - Selenium.Obr.2 - je logObr.3 - je vysledokJe to teda nove okno spustene WD, zaroven v okne je vidiet, ze sa jedna o test.Kod 2 - cez workaround nadvazuje na na to predosle okno ktore bolo spustene cez WD, cez zistene ID (ale to ID … patri WD a nie chromu)Zmaze z vyhladavacieho pola Selenium a dopise Tutorial.Vysledok je obr.4 a 5.Pointa je, ze to okno na ktore sa odkazuje kod 2 bolo tiez spustene cez WD.A aj tento workaround je experimentalny.Sluzi to na test, ked ti spadne skript a chces pokracovat dalej bez toho aby si ho musel spustal cely od zaciatku.Resp. ked si ho este len kodis, pripravujes a mas v nom nejaku chybu a hladas kde. Ukázat celý příspěvek
Abych byl upřímný, zatím jsem nezkoušel připojení na stejný prohlížeč vícekrát. Nicméně, mám funkční login systém. Rád bych se zeptal, zda bychom mohli navázat spojení, pokud bych měl jakékoli dotazy týkající se WebDriveru?
Nevim, jestli je takhle bezne mozne pripojit se k bezicimu prohlizeci, nezkousel jsem to. Ale kdyz nastavujes remote debugging port na 9244, proc se pak z programu pokousis pripojit k portu 55718?Jestli chces jenom otevrit par zalozek, neslo by to nahodou jenim z prokazove radky nejakym "start <cesta k Edge> <URL>" ?
Nastavenie v chrome, ze sa po spusteni otvori/nacita 5 stranok.Cele zadanie je divne.Pripada mi to ako nepochopena domaca uloha alebo otravovanie nevyziadanymi strankami.Lebo normálne/standardne riesenie je az genialne jednoduche.
port 55718 je z příkazu netstat -AB který zobrazí všechny běžící procesy a jejich adresy. Cílem není spustit adresu ale získat tu url adresu kterou by si uživatel spustil.
Hmm, nerozumim reci tveho kmene :(
Omlouvám se, zkusím být více konkrétnější. Zpustím CMD jako administrátor napíší příkaz: "netstat -AB". Počkám než mi příkazový řádek ukáže všechny procesy. Najdu proces s názvem msedge.exe, opíší jeho IP adresu.
Zrovna tuhle cast jsem pochopil, i kdyz to technicky delas uplne spatne.Ale nejak nechapu o co se vlastne snazis a veta "Cílem není spustit adresu ale získat tu url adresu kterou by si uživatel spustil." mi v tom nijak nepomohla. Adresa se nijak nespousti.Muzes nejak srozumitelne popsat, o co se vlastne snazis? Zapomen na webdriver, Edge a tak vubec a srozumitelnymi slovy popis problem, ktery se snazis vyresit.
Snažím se extrahovat záložky prohlížeče do kódu, čím více pokračuji tím vidím více využití.
Na zalozky prohlizece nepotrebujes webdriver, ty jsou ve vetsine prohlizecu ulozeny v citelne databazi v uzivatelove profilu na disku.
Tak jsem se podival a jak Edge tak Chrome maji zalozky v jedinem textovem souboru, ze ktereho se daji lehce ziskat (je to ve standardnim JSON) formatu.
děkuji moc, chtěl bych se dále zeptat jestli jsou v JSON formátu tak jsou dost "nečítelné". Zjistil jsem že aktualní záložky jsou v tomto adresáři: C:\Users\robin\AppData\Local\Microsoft\Edge\User Data\Default\Sessions.Bylo by možné je přeformátovat do podoby která by byla jednoduší pro extrahování url adres ?
Myslím něco podobného jako je zde: C:\Users\robin\AppData\Local\Microsoft\Edge\User Data\Default\Bookmarks
Ja to vzdavam, ta hra kdy ti nekdo poradi a ty napises zes chtel vlastne neco jineho, me uz nebavi.Jasne jsi napsal, ze chces zalozky. Ty jsou v souboru Bookmarks. Ted to vypada, ze te zajimaji otevrene taby/karty.
Taby, karty a záložky měly pro mě shodný význam. Nevhodně jsem se vyjádřil. Tuhle cestu jsem ušel pro záložky a karty.
Web driverer jsme nevyřešili a čím více vy mluvíte tak si uvědomuji že je tady více možností. 🙂
Vyborne, tak konecne srozumitelne napis, co vlastne chces a proc. Zatim jsi to myslim neudelal.
https://www.w3schools.com/python/python_json.asp
Případně se záložky neboli bookmarks dají vyexportovat do html nebo xml.
Je zde možnost získat více čítelná data v tomto adresáři ? C:\Users\user\AppData\Local\Microsoft\Edge\User Data\Default\Sessions
Nie. To su pracovne data aplikacie (MS Edge), takze su v takom formate ako aplikacia potrebuje. Neviem, co mas za problem, JSON (je to vlastne Javascript objekt) je dnes standartny format pre webove aplikacie. Najdi si na webe tutorial ako s nim pracovat v Tebou pozadovanom programovacom jazyku, je toho halda pre akykolvek bezny jazyk.
já mám v tom adresáři tyto data https://i.stack.imgur.com/X7dDH.png
což pochybuji že jsou JSON soubory ale pokud ano tak se pletu.
Ne, tohle neni JSON. Ve formatu JSON jsou ty zalozky (bookmarks), na ktere ses ptal puvodne.
Jak jsem psal tak jsem se opravil, (nevhodně jsem se vyjádřil) myslel jsem si že bookmarks budou taktéž užitečné (a možná že taky budou). Prosím, mám šanci tyto data na fotce udělat čítelnější?
Nemas, velka cast "pracovnych" dat prehliadaca je nejakom binarnom formate vyhovujucom pre ten ucel aplikacii/prehliadacu. Slozka C:\Users\robin\AppData je naviac systemova/skryta, nepocita sa, ze na data v nej bude sahat uzivatel.Takze riesis nejaky totalny nezmysel.Ked tak zmyslupne, konkretne a jednoznacne napis, co potrebujes riesit a mozno Ti tu niekto poradi ako na to. Ocividne tymto technologiam totiz vobec nerozumies.
Je možné extrahovat aktualní url adresy v tabech do kódu které má prohlížeč zapnuté?
Na svem nebo cizim pocitaci? A proc menis prezdivku?
Raději obojí prosím (pro jistotu)
A jak by to bylo na jiném počítači?
Teoreticky ano napr.v Edge 1/ cez klavesovu skratuku - CTRL+SHIFT+ D (Save all opened Bookmarks) do nejakeho foldra2/ Potom precitat z toho JSONu a ulozit si niekam3/ A zmazat novy Folder z Favorites
Alebo zapnutie historie a brat si to odtial.Ale to o co sa snazite uz s dobrou moralskou nema nic spolocne..
No z historie by to bylo fajn pokud by to bylo možné dobře přečíst.
Historie je ulozena v souboru History a je to standardni SQLite3 databaze. Nastroje pro cteni dat ze SQLite3 ma snad kazdy programovaci jazyk, vcetne Pythonu.
Děkuji
Dost jste mi pomohli. Vím že teď na tom nejsem se zkušeností tak moc dobře jako Vy ale věřte že o mě ještě uslyšíte, a ve chvíli kdy ano, budete chtít pro mě pracovat. Vidíme se za X let. :)Justin
Tesime se...
Sem čekal pořádný fízlování, a ono nějaký žáložky, v životě sem nic takovýho nepoužil.:-O
Potvrďte prosím přezdívku, kterou jsme náhodně vygenerovali, nebo si zvolte jinou. Zajistí, že váš profil bude unikátní.
Tato přezdívka je už obsazená, zvolte prosím jinou.