Próbuję uruchomić chrome z adresem URL, przeglądarka się uruchamia i nic potem nie robi.
Po 1 minucie widzę poniższy błąd:
Unable to open browser with url: 'https://www.google.com' (Root cause: org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
(Driver info: chromedriver=2.39.562718 (9a2698cba08cf5a471a29d30c8b3e12becabb0e9),platform=Windows NT 10.0.15063 x86_64) (WARNING: The server did not provide any stacktrace information)
Moja konfiguracja:
- Chrome: 66
- ChromeBrowser: 2.39.56
PS wszystko działa dobrze w Firefoksie
google-chrome
selenium
selenium-webdriver
webdriver
selenium-chromedriver
Kumar Sampath
źródło
źródło
Odpowiedzi:
Ten komunikat o błędzie ...
... sugeruje, że ChromeDriver był w stanie zainicjować / tarło nowy WebBrowser czyli Chrome sesji.
Twoje testy kodu i informacje o wersji wszystkich plików binarnych dałyby nam pewną wskazówkę, co się dzieje.
Jednak zgodnie z Dodaj --disable-dev-shm-usage do domyślnych flag uruchamiania wydaje się, że dodanie argumentu
--disable-dev-shm-usage
tymczasowo rozwiąże problem.Jeśli chcesz zainicjować / rozszerzyć nową sesję przeglądarki Chrome , możesz skorzystać z następującego rozwiązania:
wyłącz-dev-shm-użycie
Zgodnie z base_switches.cc
disable-dev-shm-usage
wydaje się działać tylko w systemie operacyjnym Linux :W dyskusji Dodaj opcję użycia / tmp zamiast / dev / shm David wspomina:
Outro
Oto link do historii Sandbox .
źródło
DevToolsActivePort file doesn't exist
i dlaczego nagle zaczął się pojawiać?disable-dev-shm-usage
nie wystarczyło. Musiałem też dodać,--no-sandbox
żeby to zadziałało. To była dla mnie kompletna poprawka dla Selenium-java:chromeOptions.addArguments("--no-sandbox", "--disable-dev-shm-usage");
Zacząłem widzieć ten problem w poniedziałek 04.06.2018. Nasze testy przeprowadzamy każdego dnia tygodnia. Wygląda na to, że jedyną rzeczą, która się zmieniła, była wersja google-chrome (która została zaktualizowana do aktualnej) JVM i Selenium to najnowsze wersje na Linuksie (Java 1.8.0_151, selenium 3.12.0, google-chrome 67.0.3396.62 i xvfb-run).
W szczególności dodanie argumentów „ --no-sandbox ” i „ --disable-dev-shm-usage ” zatrzymało błąd. Przyjrzę się tym problemom, aby znaleźć więcej informacji na temat efektu i innych pytań, np. Co spowodowało aktualizację Google Chrome.
źródło
[java] [1536892035.965][SEVERE]: Timed out receiving message from renderer: 60.000
błędy nawet z tymMieliśmy te same problemy z naszymi niewolnikami Jenkinsa (maszyną z systemem Linux) i wypróbowaliśmy wszystkie powyższe opcje.
Jedyne, co pomogło, to ustawienie argumentu
Ale kiedy zbadaliśmy dalej, zauważyliśmy, że ekran XVFB nie rozpoczął właściwości i to powoduje ten błąd. Po naprawieniu ekranu XVFB rozwiązano problem.
źródło
Miałem ten sam problem w Pythonie. Powyższe pomogło. Oto, czego użyłem w Pythonie -
źródło
Aktualizacja:
Jestem w stanie rozwiązać ten problem i teraz mogę uzyskać dostęp do przeglądarki Chrome z żądanym adresem URL.
Rezultaty wypróbowania dostarczonych rozwiązań:
Wypróbowałem wszystkie ustawienia podane powyżej, ale nie udało mi się rozwiązać problemu
Wyjaśnienie dotyczące problemu:
Zgodnie z moją obserwacją plik DevToolsActivePort nie istnieje, gdy chrome nie może znaleźć swojego odniesienia w folderze scoped_dirXXXXX.
Kroki podjęte w celu rozwiązania problemu
Dodano poniższy kod, aby wywołać chrome
Wykonując powyższe czynności, udało mi się rozwiązać problem.
Dziękuję za odpowiedzi.
źródło
Ostatnio miałem do czynienia z tym samym problemem i po kilku próbach i błędach zadziałało to również dla mnie.
MUSI BYĆ NA GÓRZE:
BaseSeleniumTests.java
GoogleSearchPageTraditionalSeleniumTests.java
pom.xml
źródło
W moim przypadku w następującym środowisku:
3.7.5
C:\Windows
3.141.0
Musiałem dodać argumenty
--no-sandbox
i--remote-debugging-port=9222
doChromeOptions
obiektu i uruchomić kod jako administrator, uruchamiając Powershell / cmd jako administrator.Oto powiązany fragment kodu:
źródło
Napotkałem ten problem na Ubuntu 20 z Python Selenium po pierwszym pobraniu chromedrivera osobno, a następnie użyciu
sudo apt install chromium-browser
Mimo że były to ta sama wersja, to się działo.Moja poprawka polegała na użyciu dostarczonego sterownika Chrome, który został dostarczony z pakietem repozytorium znajdującym się pod adresem
źródło
Jak stwierdzono w tej innej odpowiedzi :
Wśród możliwych przyczyn, chciałbym wspomnieć fakt, że w przypadku, gdy prowadzisz Chromium bezgłowe poprzez Xvfb, to może trzeba
export
doDISPLAY
zmiennej: w moim przypadku, miałem na miejscu (zgodnie z zaleceniami)--disable-dev-shm-usage
i--no-sandbox
opcje, wszystko było działa dobrze, ale w nowej instalacji z najnowszym (w momencie pisania) Ubuntu 18.04 ten błąd zaczął się pojawiać, a jedyną możliwą poprawką było wykonanieexport DISPLAY=":20"
(po wcześniejszym uruchomieniu Xvfb zXvfb :20&
).źródło
Miałem również do czynienia z tym problemem podczas integracji z serwerem jenkins, byłem używany jako użytkownik root do pracy jenkin, problem został rozwiązany, gdy zmieniłem użytkownika na innego użytkownika . Nie jestem pewien, dlaczego ten błąd występuje u użytkownika root.
źródło
W moim przypadku stało się to, gdy próbowałem użyć domyślnego profilu użytkownika:
To spowodowało, że chrome ponownie wykorzystał procesy już uruchomione w tle, w taki sposób, że proces rozpoczęty przez chromedriver.exe został po prostu zakończony.
Rozwiązanie: zabij wszystkie procesy chrome.exe działające w tle.
źródło
możliwości aktualizacji w conf.js jako
źródło
W moim przypadku próbowałem stworzyć działający jar w systemie operacyjnym Windows z przeglądarką chrome i chcę uruchomić to samo w trybie headless w unix box z CentOs na nim. Wskazywałem plik binarny na sterownik, który pobrałem i spakowałem z pakietem. U mnie ten problem nadal występuje niezależnie od dodania poniższego:
Rozwiązaniem, które wypróbowałem i pracowałem dla mnie, jest pobranie chrome i jego narzędzi z hosta VM / Unix box, zainstalowanie i wskazanie tego pliku binarnego w pakiecie automatyzacji i bingo! To działa :)
Polecenie pobierania:
Polecenie instalacji:
Zaktualizuj pakiet za pomocą poniższej ścieżki binarnej google-chrome:
I… to działa!
źródło
Miałem ten sam problem, ale w moim przypadku chrome był wcześniej zainstalowany w folderze tymczasowym użytkownika, po czym został ponownie zainstalowany w plikach programu. Żadne z przedstawionych tutaj rozwiązań nie pomogło mi. Ale jeśli podasz ścieżkę do chrome.exe, wszystko działa:
Mam nadzieję, że to komuś pomoże =)
źródło
Żadne rozwiązanie nie zadziałało dla mojego. Ale oto obejście:
źródło
Możesz otrzymać ten błąd po prostu za przekazanie złych argumentów do Chrome. Na przykład, jeśli przejdę
"headless"
jako argument do sterownika C # ChromeDriver, działa świetnie. Jeśli popełnię błąd i użyję niewłaściwej składni,"--headless"
otrzymamDevToolsActivePort file doesn't exist
błąd.źródło
Napotkałem ten sam problem, używam przeglądarki UBUNTU, PYTHON i OPERA . w moim przypadku problem powstał, ponieważ miałem przestarzałą wersję operadrivera.
Rozwiązanie: 1. Upewnij się, że zainstalowałeś najnowszą wersję przeglądarki opera (nie używaj opera beta ani opera developer), w tym celu przejdź na oficjalną stronę opery i pobierz stamtąd najnowszą wersję opera_stable.
wget https://github.com/operasoftware/operachromiumdriver/releases/download/v.80.0.3987.100/operadriver_linux64.zip
w moim przypadku ostatnia to 80.0.3987, jak widać
Dodatkowo zainstalowałem również chromedriver (ale ponieważ zrobiłem to przed testowaniem, nie wiem, czy to jest potrzebne), aby zainstalować chromedriver, wykonaj kroki z poprzedniego kroku: v
Ciesz się i dziękuję!
Przykładowy kod selenu
źródło
Wydaje się, że istnieje wiele możliwych przyczyn tego błędu. W naszym przypadku błąd wystąpił, ponieważ mieliśmy w kodzie następujące dwie linie:
Rozwiązuje się to poprzez usunięcie drugiej linii.
źródło
Napotkałem ten sam problem z uruchomieniem Chrome przez Behat / Mink i Selenium w kontenerze Docker. Po kilku zabawach dotarłem do następującego,
behat.yml
które dostarcza wymienione powyżej przełączniki. Zauważ, że wszystkie z nich były wymagane, aby pomyślnie go uruchomić.źródło
W moim przypadku jestem w środowisku Kubernetes, w którym nie mogę użyć domyślnego TMPDIR, ponieważ zapełni on katalog tymczasowy śmieciami.
Więc użyłem tego, aby użyć innego tmpdir:
Ale teraz, gdy zaktualizowałem wszystko do najnowszego, wydaje się, że to już nie działa. Będę musiał znaleźć nowy sposób, aby to zrobić.
źródło
Dzieje się tak, gdy chromedriver nie może dowiedzieć się, jakiego portu debugowania używa chrome.
Jedną z możliwych przyczyn jest otwarta usterka z HKEY_CURRENT_USER \ Software \ Policies \ Google \ Chrome \ UserDataDir
Ale w moim ostatnim przypadku była to inna niezidentyfikowana przyczyna.
Na szczęście ręczne ustawienie numeru portu zadziałało:
źródło
W moim przypadku zły numer portu. Sprawdź, czy numer portu podczas uruchamiania serwera Selenium jest taki sam jak w skrypcie.
źródło
Rozwiązuję ten problem instalując
yum -y install gtk3-devel gtk3-devel-docs
”, działa dobrzeMoje środowisko pracy to:
Przed:
Po:
źródło
Ponieważ jest to najbardziej aktywna wiadomość dla tego typu błędu, chciałem wspomnieć o moim rozwiązaniu (po spędzeniu godzin na naprawie tego).
W Ubuntu 18.04, używając Chrome 70 i Chromedriver 2.44 oraz Python3, ciągle otrzymywałem ten sam błąd DevToolsActivePort, nawet gdy wyłączyłem wszystkie wymienione powyżej opcje. Plik dziennika chromedriver, a także ps pokazały, że chromedriver, który ustawiłem w chrome_options.binary_location, działał, ale zawsze powodował błąd DevToolsActivePort. Kiedy usunąłem chrome_options.binary_location = '....' i dodałem go do tworzenia webdrivera, działało dobrze. webdriver.Chrome ('/ ścieżka do ... / chromedriver', chrome_options = chrome_options)
Dziękuję wszystkim za uwagi, które pozwalają mi zrozumieć i rozwiązać problem.
źródło