5

Jestem świadomy, jak mogę załadować rozszerzenie chrome w selenowym webdriverze. Ale nie widzę żadnych postów/blogów opisujących, jak mogę uruchomić rozszerzenie chrome z Selenium.
Muszę jawnie zrobić rozszerzenie chrome uruchomić/sprawiają, że wykonuje swoją funkcję z selenu. Na przykład chcę wyczyścić pamięć podręczną przeglądarki Chrome, używając tego extension z Selenium Webdriver.

Czy mogę to zrobić w pierwszej kolejności? A może Selenium WebDriver pomoże mi tylko w załadowaniu rozszerzenia do instancji przeglądarki i pozostawieniu go tam?Uruchamianie rozszerzenia Chrome z Selenium WebDriver

Odpowiedz

7

Po włączeniu rozszerzenia przeglądarki Chrome jest już "uruchomione" (przynajmniej strona w tle/wydarzenie). Nie ma API do programowego kliknięcia przycisku.

Jeśli chcesz z niewielkim wysiłkiem korzystać z funkcjonalności istniejącego rozszerzenia, sugeruję pobranie kodu źródłowego rozszerzenia i wstawienie dodatkowego detektora zdarzeń w kodzie źródłowym rozszerzenia.

  1. Uzyskaj źródło rozszerzenia (np. Za pomocą Chrome extension source viewer znanej również jako CRX Viewer).
  2. Rozpakuj plik zip.
  3. Utwórz nowy plik HTML, example_name.html i niech ona zawierać:

    <script src="example_name.js"></script> 
    
  4. Utwórz nowy plik skryptu, example_name.js, i niech to nazywają funkcjonalność przedłużenia za np:

    chrome.runtime.getBackgroundPage(function(bg) { 
        // Relevant function at the background page. In your specific example: 
        bg.clearCache(); 
    }); 
    
  5. Dodaj poprzedni plik HTML do pliku web_accessible_resources w pliku manifestu.
  6. Ponownie spakuj rozszerzenie, np. za pomocą interfejsu GUI w chrome://extensions lub używając

    chrome.exe --pack-extension=directorycontainingextension 
    

    Po utworzeniu directorycontainingextension.crx załadować ten plik crx w Chrome znać identyfikator rozszerzenia. Jeśli nie wiesz, jak załadować plik CRX w Chrome, po prostu wejdź na stronę https://robwu.nl/crxviewer/, wybierz plik CRX, otwórz narzędzia programistyczne F12 i skopiuj 32-znakowy ciąg w "Obliczony identyfikator rozszerzenia: [tutaj ID rozszerzenia tutaj]".

    (Począwszy od ChromeDriver 2.11, you can just zip the extension zamiast pakowania go jako plik CRX i twardego kodeksu identyfikator rozszerzenia w pliku manifestu przez ustawienie atrybutu "key" (atrybut ten "key" jest również drukowane na konsoli F12 przez CRX Przeglądarka).)

Po zmodyfikowaniu rozszerzenia będzie dostępne rozszerzenie o takiej samej funkcjonalności, jak oryginalne, oraz dodatkowa strona HTML. Ta nowa strona HTML wywoła funkcję rozszerzenia, gdy zostanie otwarta.

Po wykonaniu tej czynności "uruchomienie" rozszerzenia jest tak proste, jak otwarcie chrome-extension://[EXTENSION ID HERE]/example_name.html w nowej karcie.

Jeśli nie lubisz tych nowych kart, możesz również użyć interfejsu API chrome.webRequest lub chrome.declarativeWebRequest, aby przechwycić niestandardowe adresy URL i aktywować żądaną funkcję za każdym razem, gdy strona zażąda tego zasobu.Następnie można po prostu umieścić adres URL w <img> aktywować funkcję rozszerzenia.

+0

„4. Utwórz nowy plik skryptu, example_name.js, i niech to wywołać rozszerzenie funkcjonalności za”--- Jak mogę dowiedzieć się, która metoda jest odpowiedzialny za funkcjonowanie danej wtyczki? Chcę pobrać filmy przy użyciu«downloader wideo profesjonalny» podłącz. – HelloWorldNoMore

0

Powyższe rozwiązanie jest technicznie dźwięk wydaje się być skomplikowane , więc pomyślałem inny sposób to zrobić. Ponieważ wiele razy muszę wiele rzeczy, które są lepiej wykonywane ręcznie uwierzytelnień, niektórych cookies, etc

używam foldery jako profile, biegnę:

chrome_options = Options() 
chrome_options.add_argument("user-data-dir=selenium") 
driver = webdriver.Chrome(chrome_options=chrome_options) 
driver.get("www.google.com") 

Potem ręcznie zainstalować rozszerzenia i zrobić loginy muszę teraz każdy czas zacznę Webdriver z tego folderu wszystko jest tam

chrome_options = Options() 
chrome_options.add_argument("user-data-dir=selenium") 
driver = webdriver.Chrome(chrome_options=chrome_options) 
driver.get("www.google.com") #Now you can see the Extensions and the logins done are present 

zaletą jest to, można korzystać z wielu foldery z różnych ustawień i rozszerzeń bez konieczności instalowania i odinstalowywania EXTENS Jony, zmiana ustawień, zmiana loginów itp

Powiązane problemy