WebDriverException: unbekannter Fehler: Die DevToolsActivePort-Datei ist beim Versuch, den Chrome-Browser zu starten, nicht vorhanden


152

Ich versuche, Chrome mit einer URL zu starten, der Browser wird gestartet und danach wird nichts mehr ausgeführt.

Nach 1 Minute wird der folgende Fehler angezeigt:

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)

Meine Konfiguration:

  • Chrome: 66
  • ChromeBrowser: 2.39.56

PS: In Firefox funktioniert alles einwandfrei


1
Können Sie die Frage mit dem Code aktualisieren, der diesen Fehler verursacht?
GPT14

Ich habe diesen Fehler erhalten, als vncserver abgestürzt ist und ich keine X-Anzeige mehr hatte
xtian

Antworten:


71

Diese Fehlermeldung ...

org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist 

... bedeutet , dass die ChromeDriver nicht in der Lage waren , einen neuen zu initiieren / laichen WebBrowser dh Chrome Browser - Sitzung.

Ihre Codeversuche und die Versionsinformationen aller Binärdateien hätten uns einen Hinweis darauf gegeben, was falsch läuft.

Da jedoch pro --disable-dev-shm-Nutzung Standardstart Flags hinzufügen scheint das Argument hinzugefügt --disable-dev-shm-usagewird vorübergehend das Problem lösen.

Wenn Sie eine neue Chrome-Browsersitzung initiieren / überspannen möchten , können Sie die folgende Lösung verwenden:

System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized"); // open Browser in maximized mode
options.addArguments("disable-infobars"); // disabling infobars
options.addArguments("--disable-extensions"); // disabling extensions
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("--no-sandbox"); // Bypass OS security model
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");

disable-dev-shm-usage

Wie pro base_switches.cc disable-dev-shm-usage scheint nur gültig zu sein Linux - Betriebssystem :

#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
// The /dev/shm partition is too small in certain VM environments, causing
// Chrome to fail or crash (see http://crbug.com/715363). Use this flag to
// work-around this issue (a temporary directory will always be used to create
// anonymous shared memory files).
const char kDisableDevShmUsage[] = "disable-dev-shm-usage";
#endif

Fügen Sie in der Diskussion eine Option hinzu, um / tmp anstelle von / dev / shm zu verwenden. David erwähnt:

Ich denke, es würde davon abhängen, wie / dev / shm und / tmp gemountet sind. Wenn beide als tmpfs gemountet sind, gehe ich davon aus, dass es keinen Unterschied gibt. Wenn / tmp aus irgendeinem Grund nicht als tmpfs zugeordnet ist (und ich denke, dass es standardmäßig standardmäßig als tmpfs zugeordnet ist), ordnet die Verwaltung des gemeinsam genutzten Chrome-Speichers beim Erstellen anonymer freigegebener Dateien immer Dateien dem Speicher zu. Dies sollte auch in diesem Fall nicht der Fall sein viel Unterschied. Ich denke, Sie könnten Telemetrietests mit aktiviertem Flag erzwingen und sehen, wie es geht.

Warum nicht standardmäßig verwendet, es wurde vom Team für gemeinsam genutzten Speicher zurückgedrängt. Ich denke, es ist sinnvoll, standardmäßig / dev / shm für gemeinsam genutzten Speicher zu verwenden.

Letztendlich sollte all dies auf die Verwendung von memfd_create umgestellt werden, aber ich denke nicht, dass dies bald geschehen wird, da die Chrome-Speicherverwaltung erheblich überarbeitet werden muss.


Outro

Hier ist der Link zur Sandbox- Geschichte.


8
Aber was hat diesen speziellen Fehler verursacht DevToolsActivePort file doesn't existund warum ist er plötzlich aufgetaucht?

3
Die Elemente "Zusätzliche Überlegungen" - sie scheinen für dieses Problem durchaus zutreffend zu sein. Besonders diese Art von Situation, in der nicht genau festgestellt wurde, was das Problem verursacht hat.
Pete Kelley

5
Aus dem gelöschten Teil des Beitrags von @ DebanjanB kann dies durch die Verwendung eines Chromedrivers verursacht werden, der die Version des installierten Chrome nicht unterstützt. Dies kann beispielsweise passieren, wenn Chrome ohne Aktualisierung von Chromedriver aktualisiert wird.
Expz

Dies löste das Problem für mich, es funktioniert nicht auf meinem aktuellen System (Ubuntu 18 + Python 3.7)
tw0000

3
Falls dies jemand anderem hilft, disable-dev-shm-usagewar es nicht genug , nur etwas hinzuzufügen . Ich musste auch hinzufügen --no-sandbox, damit es funktioniert. Dies war die komplette Lösung für mich für Selenium-Java:chromeOptions.addArguments("--no-sandbox", "--disable-dev-shm-usage");
George Pantazes

52

Ich habe dieses Problem am Montag 2018-06-04 gesehen. Unsere Tests finden an jedem Wochentag statt. Es scheint, dass das einzige, was sich geändert hat, die Google-Chrome-Version (die auf die aktuelle Version aktualisiert wurde) war. JVM und Selenium waren neuere Versionen unter Linux (Java 1.8.0_151, Selen 3.12.0, Google-Chrome 67.0.3396.62 und xvfb-run).
Insbesondere das Hinzufügen der Argumente " --no- sandbox " und " --disable-dev-shm-usage " hat den Fehler gestoppt. Ich werde mich mit diesen Problemen befassen, um weitere Informationen über den Effekt und andere Fragen zu erhalten, z. B. darüber, was die Aktualisierung von Google-Chrome ausgelöst hat.

ChromeOptions options = new ChromeOptions();
        ...
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");

Ich möchte klarstellen, dass dieser Code an jedem Wochentag auf einer Ubuntu Linux-Box ausgeführt wurde, aber der entsprechende Code auf dem Windows-Desktop auch am Montag in Ordnung war. Ich habe keine Informationen darüber gefunden, wozu die Funktionalität der DevToolsActivePort-Datei dient, und das wäre auch nützlich. PK
Pete Kelley

1
Diese Optionen haben den Fehler auch für mich gestoppt. pd: mit einem Rails-Stack.
Mario Pérez

Ich bekomme immer noch [java] [1536892035.965][SEVERE]: Timed out receiving message from renderer: 60.000Fehler
Jonathan

@ Jonathan - Hi! Können Sie weitere Details angeben, z. B. welches Betriebssystem, welche Versionen der von Ihnen verwendeten Komponenten oder wie Sie den Prozess aufrufen?
Pete Kelley

@Toby: Hallo! Ich wollte nicht implizieren, dass die Position einen Unterschied machte, nur die minimale Verwendung dieser Parameter. Es schien, dass einige der Standardwerte, auf die ich mich verlassen hatte, geändert wurden, als Upgrades stattfanden. Alle anderen Details zu Ihrem System oder Ihrer Nachricht, die Sie bereitstellen, können hilfreich sein.
Pete Kelley

34

Wir hatten die gleichen Probleme mit unseren Jenkins-Slaves (Linux-Maschine) und haben alle oben genannten Optionen ausprobiert.

Das einzige, was geholfen hat, ist das Argument zu setzen

chrome_options.add_argument('--headless')

Als wir jedoch weiter nachforschten, stellten wir fest, dass der XVFB-Bildschirm keine Eigenschaft gestartet hat und dies diesen Fehler verursacht. Nachdem wir den XVFB-Bildschirm repariert hatten, wurde das Problem behoben.


2
Dies löste mein Problem, wenn ich mit C # lief (in diesem Fall sah die Option folgendermaßen aus: options.AddArgument ("- headless");
ozz

XVFB war das Problem für mich
lucaswxp vor

23

Ich hatte das gleiche Problem in Python. Das obige hat geholfen. Folgendes habe ich in Python verwendet:

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('/path/to/your_chrome_driver_dir/chromedriver',chrome_options=chrome_options)

Ich habe mein Problem mit dem Upgrade von Chrome gelöst (ich hatte bereits das neueste Chromedrive), daher musste ich auch den üblichen Browser aktualisieren.
axel_ande

18

Aktualisieren:

Ich bin in der Lage, das Problem zu lösen, und jetzt kann ich mit der gewünschten URL auf das Chrom zugreifen.

Ergebnisse des Versuchs der bereitgestellten Lösungen:

Ich habe alle oben angegebenen Einstellungen ausprobiert, konnte das Problem jedoch nicht beheben

Erläuterung zum Problem:

Nach meiner Beobachtung wird die nicht vorhandene DevToolsActivePort-Datei verursacht, wenn Chrome seine Referenz nicht im Ordner scoped_dirXXXXX finden kann.

Schritte zur Lösung des Problems

  1. Ich habe alle Chrome-Prozesse und Chrome-Treiberprozesse beendet.
  2. Der folgende Code wurde hinzugefügt, um das Chrome aufzurufen

    System.setProperty("webdriver.chrome.driver","pathto\\chromedriver.exe");    
    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver = new ChromeDriver(options);
    driver.get(url);
    

Mit den obigen Schritten konnte ich das Problem beheben.

Danke für deine Antworten.


3
Wissen Sie, welche Auswirkungen useAutomationExtension hat? Es deaktiviert Erweiterungen für die Automatisierung (Screenshots / Steuerung usw.) Nein? Sollte das Aufkommen von DevTools nicht dazu führen, dass diese Änderung keine Auswirkungen hat? codereview.chromium.org/2785413002
Toby

10

Ich hatte kürzlich das gleiche Problem und nach einigem Ausprobieren funktionierte es auch für mich.

MUSS OBEN SEIN:

options.addArguments("--no-sandbox"); //has to be the very first option

BaseSeleniumTests.java

public abstract class BaseSeleniumTests {

    private static final String CHROMEDRIVER_EXE = "chromedriver.exe";
    private static final String IEDRIVER_EXE = "IEDriverServer.exe";
    private static final String FFDRIVER_EXE = "geckodriver.exe";
    protected WebDriver driver;

    @Before
    public void setUp() {
        loadChromeDriver();
    }

    @After
    public void tearDown() {
        if (driver != null) {
            driver.close();
            driver.quit();
        }
    }

    private void loadChromeDriver() {
        ClassLoader classLoader = getClass().getClassLoader();
        String filePath = classLoader.getResource(CHROMEDRIVER_EXE).getFile();
        DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        ChromeDriverService service = new ChromeDriverService.Builder()
                .usingDriverExecutable(new File(filePath))
                .build();
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--no-sandbox"); // Bypass OS security model, MUST BE THE VERY FIRST OPTION
        options.addArguments("--headless");
        options.setExperimentalOption("useAutomationExtension", false);
        options.addArguments("start-maximized"); // open Browser in maximized mode
        options.addArguments("disable-infobars"); // disabling infobars
        options.addArguments("--disable-extensions"); // disabling extensions
        options.addArguments("--disable-gpu"); // applicable to windows os only
        options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
        options.merge(capabilities);
        this.driver = new ChromeDriver(service, options);
    }

}

GoogleSearchPageTraditionalSeleniumTests.java

@RunWith(SpringRunner.class)
@SpringBootTest
public class GoogleSearchPageTraditionalSeleniumTests extends BaseSeleniumTests {

    @Test
    public void getSearchPage() {
        this.driver.get("https://www.google.com");
        WebElement element = this.driver.findElement(By.name("q"));
        assertNotNull(element);
    }

}

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <scope>test</scope>
        </dependency>
</dependencies>

Interessant! Wie generiert man eine .side-Datei? Ist dies etwas, was eine QS-Person manuell macht?
Nital

Sie verwenden die Selenium-IDE, um einen Test aufzuzeichnen. Das Ergebnis ist eine .side-Datei. Es läuft gut mit der IDE, aber ich versuche es mit Selen-Side-Runner zu laufen, aber ich stoße auf alle möglichen Probleme mit Chromedriver.
Pabrams

muss die erste Option sein - verbringe Tage damit, diesen haha
cuniculus

Vielen Dank! Das Hinzufügen von "--no-sandbox" löst mein Problem.
Matabares

7

In meinem Fall in der folgenden Umgebung:

  • Windows 10
  • Python 3.7.5
  • Google Chrome Version 80 und entsprechender ChromeDriver im Pfad C:\Windows
  • Selen 3.141.0

Ich musste die Argumente --no-sandboxund --remote-debugging-port=9222zum ChromeOptionsObjekt hinzufügen und den Code als Administrator ausführen, indem ich Powershell / cmd als Administrator zu Mittag aß.

Hier ist der zugehörige Code:

options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('--disable-infobars')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--no-sandbox')
options.add_argument('--remote-debugging-port=9222')
driver = webdriver.Chrome(options=options)

1
das gleiche gilt für mich mit docker mit ubuntu 18.04, py3.7, chrome (
treiber

Dies funktionierte bei mir ohne weitere Probleme. Ich hatte heute gerade angefangen, auf dieses Problem zu stoßen, aber aufgrund Ihrer Antwort ist es schnell behoben! Meine Umgebung ist im Wesentlichen dieselbe wie Ihre.
Ryan Harris

5

Ich bin auf dieses Problem unter Ubuntu 20 mit Python Selenium gestoßen, nachdem ich zuerst den Chromedriver separat heruntergeladen und dann verwendet hatte. sudo apt install chromium-browserObwohl es sich um dieselbe Version handelte, passierte dies immer wieder.

Mein Fix bestand darin, den mitgelieferten Chrome-Treiber zu verwenden, der mit dem Repo-Paket unter geliefert wurde

/snap/bin/chromium.chromedriver

driver = webdriver.Chrome(chrome_options=options, executable_path='/snap/bin/chromium.chromedriver')

4

Wie in dieser anderen Antwort angegeben :

Diese Fehlermeldung ... impliziert, dass der ChromeDriver keine neue WebBrowser-Sitzung, dh keine Chrome-Browser-Sitzung, initiieren / erzeugen konnte.

Unter den möglichen Ursachen möchte ich die Tatsache erwähnen, dass Sie für den Fall, dass Sie ein kopfloses Chromium über Xvfb ausführen, möglicherweiseexport die DISPLAYVariable benötigen : In meinem Fall hatte ich (wie empfohlen) die Optionen --disable-dev-shm-usageund --no-sandbox, alles war vorhanden läuft einwandfrei, aber in einer neuen Installation, die das neueste (zum Zeitpunkt des Schreibens) Ubuntu 18.04 ausführt, trat dieser Fehler auf, und der einzig mögliche Fix bestand darin, ein auszuführen export DISPLAY=":20"(nachdem zuvor Xvfb mit gestartet wurde Xvfb :20&).


OMG Danke. Ich habe ein paar Änderungen an unserem Docker-Container vorgenommen und versehentlich xvfb weggelassen. Ich hätte das nie gefunden, wenn du das nicht hier gelassen hättest :-).
Ryan Shillington

3

Dieses Problem trat auch bei der Integration in den Jenkins-Server auf. Ich wurde als Root- Benutzer für den Jenkins-Job verwendet. Das Problem wurde behoben, als ich den Benutzer in einen anderen Benutzer änderte . Ich bin nicht sicher, warum dieser Fehler für den Root-Benutzer auftritt.

  • Google Chrome Version 71.0
  • ChromeDriver Version 2.45
  • CentOS7 Version 1.153

Nicht-Root-Benutzer arbeitete für mich, ich hatte die richtige Chrome-Treiberversion für das Chrom.
TicJit

2

In meinem Fall ist es passiert, als ich versucht habe, mein Standardbenutzerprofil zu verwenden:

...
options.addArguments("user-data-dir=D:\\MyHomeDirectory\\Google\\Chrome\\User Data");
...

Dies löste Chrome aus, um Prozesse, die bereits im Hintergrund ausgeführt wurden, wiederzuverwenden, sodass der von chromedriver.exe gestartete Prozess einfach beendet wurde.

Lösung: Beenden Sie alle chrome.exe-Prozesse, die im Hintergrund ausgeführt werden.


Ich hatte ein ähnliches Problem, aber unter Linux - meine Chrome-Prozesse wurden nach dem Absturz des Skripts nicht ordnungsgemäß beendet und wurden falsch wiederverwendet. sie zu töten löste das Problem
jeremycg

2

Aktualisierungsfunktionen in conf.js als

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['todo-spec.js'],
  capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: ['--disable-gpu', '--no-sandbox', '--disable-extensions', '--disable-dev-shm-usage']
    }
  },

};

2

In meinem Fall habe ich versucht, ein lauffähiges JAR unter Windows mit einem Chrome-Browser zu erstellen, und möchte dasselbe im Headless-Modus in einer Unix-Box mit CentOs ausführen. Und ich habe meine Binärdatei auf einen Treiber gerichtet, den ich heruntergeladen und mit meiner Suite gepackt habe. Für mich tritt dieses Problem weiterhin auf, unabhängig davon, ob Folgendes hinzugefügt wird:

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("--no-sandbox");
System.setProperty("webdriver.chrome.args", "--disable-logging");
System.setProperty("webdriver.chrome.silentOutput", "true");
options.setBinary("/pointing/downloaded/driver/path/in/automationsuite");
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("disable-infobars"); // disabling infobars
options.addArguments("--disable-extensions"); // disabling extensions
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("window-size=1024,768"); // Bypass OS security model
options.addArguments("--log-level=3"); // set log level
options.addArguments("--silent");//
options.setCapability("chrome.verbose", false); //disable logging
driver = new ChromeDriver(options);

Die Lösung, die ich für mich ausprobiert und gearbeitet habe, ist, das Chrome und seine Tools auf die Host-VM / Unix-Box herunterzuladen, die Binärdatei in der Automatisierungssuite und im Bingo zu installieren und darauf zu verweisen! Es klappt :)

Download-Befehl:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

Installationsbefehl:

sudo yum install -y ./google-chrome-stable_current_*.rpm

Aktualisieren Sie die Suite mit dem folgenden binären Pfad von Google-Chrome:

options.setBinary("/opt/google/chrome/google-chrome");

Und es funktioniert!


Wo fügen wir diesen Code hinzu? Ich sehe keinen C # -Code in meiner .side-Datei
pabrams

1

Ich hatte das gleiche Problem, aber in meinem Fall wurde Chrome zuvor im temporären Benutzerordner installiert, nachdem es erneut in Programmdateien installiert wurde. Eine der hier angebotenen Lösungen hat mir also nicht geholfen. Wenn Sie jedoch den Pfad zu chrome.exe angeben, funktioniert alles:

chromeOptions.setBinary("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");

Ich hoffe das hilft jemandem =)


scheint das genaue Gegenteil von @shiuu Fix unten
Toby

1

Für mich hat keine Lösung funktioniert. Aber hier ist eine Problemumgehung:

maxcounter=5
for counter in range(maxcounter):
    try:           
        driver = webdriver.Chrome(chrome_options=options,
                          service_log_path=logfile,
                          service_args=["--verbose", "--log-path=%s" % logfile])
        break
    except WebDriverException as e:
        print("RETRYING INITIALIZATION OF WEBDRIVER! Error: %s" % str(e))
        time.sleep(10)
        if counter==maxcounter-1:
            raise WebDriverException("Maximum number of selenium-firefox-webdriver-retries exceeded.")

1

Sie können diesen Fehler einfach erhalten, wenn Sie schlechte Argumente an Chrome übergeben. Wenn ich zum Beispiel "headless"als Argument an den C # ChromeDriver übergebe, wird es großartig gestartet. Wenn ich einen Fehler mache und die falsche Syntax verwende, "--headless"wird der DevToolsActivePort file doesn't existFehler angezeigt.


1

Ich bin auf dasselbe Problem gestoßen, ich verwende den Browser UBUNTU, PYTHON und OPERA . In meinem Fall entstand das Problem, weil ich eine veraltete Version von Operadriver hatte.

Lösung: 1. Stellen Sie sicher, dass Sie die neueste Version des Opernbrowsers installieren (verwenden Sie keine Opern-Beta oder keinen Opernentwickler). Gehen Sie dazu zur offiziellen Opern-Site und laden Sie von dort die neueste Version von opera_stable herunter.

  1. Installieren Sie den neuesten Operntreiber (wenn Sie bereits einen Opern-Treiber installiert haben, müssen Sie ihn zuerst mit sudo rm entfernen ...)

wget https://github.com/operasoftware/operachromiumdriver/releases/download/v.80.0.3987.100/operadriver_linux64.zip

   unzip operadriver_linux64.zip
   sudo mv operadriver /usr/bin/operadriver
   sudo chown root:root /usr/bin/operadriver
   sudo chmod +x /usr/bin/operadriver

in meinem Fall war spätestens 80.0.3987, wie Sie sehen können

  1. Zusätzlich habe ich auch chromedriver installiert (aber da ich es vor dem Testen getan habe, weiß ich nicht, dass dies erforderlich ist), um chromedriver zu installieren, folge den Schritten des vorherigen Schritts: v

  2. Viel Spaß und danke mir!

Beispiel für einen Selencode

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Opera()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.quit()

0

Es scheint, dass es viele mögliche Ursachen für diesen Fehler gibt. In unserem Fall ist der Fehler aufgetreten, weil wir die folgenden zwei Zeilen im Code hatten:

System.setProperty("webdriver.chrome.driver", chromeDriverPath);
chromeOptions.setBinary(chromeDriverPath);

Es wird gelöst, indem die zweite Zeile entfernt wird.


scheint das genaue Gegenteil von @ sergiy-konoplyaniy Fix oben: '(
Toby

In unserem setBinary haben wir versucht, den Chrome-Treiber einzustellen, was ein Fehler zu sein scheint. @ sergiy-konoplyaniys Fix setzt chrome.exe über setBinary.
Shiuu

Wo hast du diesen Code? Ich habe nur eine .side-Datei und keinen C # -Code.
Pabrams

0

Ich bin auf dasselbe Problem gestoßen, bei dem Chrome über Behat / Mink und Selenium in einem Docker-Container ausgeführt wurde. Nach einigem Fummeln kam ich zu folgendem, behat.ymldas die oben genannten Schalter liefert. Beachten Sie, dass alle erforderlich waren, damit ich es erfolgreich zum Laufen bringen konnte.

default:
    extensions:
        Behat\MinkExtension:
            base_url: https://my.app/
            default_session: selenium2
            selenium2:
                browser: chrome
                capabilities:
                    extra_capabilities:
                        chromeOptions:
                            args:
                                - "headless"
                                - "no-sandbox"
                                - "disable-dev-shm-usage"

0

In meinem Fall bin ich in einer Kubernetes-Umgebung, in der ich das Standard-TMPDIR nicht verwenden kann, da es das temporäre Verzeichnis mit Müll füllt.

Also habe ich dies verwendet, um ein anderes tmpdir zu verwenden:

driver = new ChromeDriver(new ChromeDriverService.Builder()
                    .withEnvironment(ImmutableMap.of("TMPDIR", customTmpPath))
                    .build(), options);

Aber jetzt, da ich alles auf den neuesten Stand gebracht habe, scheint dies nicht mehr zu funktionieren. Ich muss einen neuen Weg finden, um dies zu tun.


0

Es passiert, wenn chromedriver nicht herausfindet, welchen Debugging-Port Chrome verwendet.

Eine mögliche Ursache ist ein offener Fehler bei HKEY_CURRENT_USER \ Software \ Policies \ Google \ Chrome \ UserDataDir

Aber in meinem letzten Fall war es eine andere unbekannte Ursache.

Glücklicherweise funktionierte das manuelle Einstellen der Portnummer:

final String[] args = { "--remote-debugging-port=9222" };
options.addArguments(args);
WebDriver driver = new ChromeDriver(options);

2
Ist es ein konstanter Hafen? Oder wo kann ich danach suchen?
Mike Shiyan

0

Falsche Portnummer in meinem Fall. Überprüfen Sie, ob die Portnummer beim Starten des Selenium-Servers mit der in Ihrem Skript übereinstimmt.


-2

Ich löse dieses Problem durch Installation yum -y install gtk3-devel gtk3-devel-docs", es funktioniert in Ordnung

Meine Arbeit env ist:

Selenium Version 3.12.0
ChromeDriver Version v2.40
Chrome 68 level

Vor:
Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Nach dem:
Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein


9
Aus der Überprüfung: Bitte posten Sie keinen Text in Bildern. BEARBEITEN Sie Ihre Antwort und ersetzen Sie diese Bilder durch Text. Danke
sɐunıɔ ןɐ qɐp

1
Löst dies das Problem für irgendjemanden? Dies hat das Problem für mich nicht gelöst
Bendram

-2

Da dies die aktivste Meldung für diese Art von Fehler ist, wollte ich meine Lösung erwähnen (nachdem ich Stunden damit verbracht hatte, dies zu beheben).

Unter Ubuntu 18.04 mit Chrome 70 und Chromedriver 2.44 sowie Python3 wurde immer wieder der gleiche DevToolsActivePort-Fehler angezeigt, auch wenn ich alle oben aufgeführten Optionen deaktiviert habe. Die chromedriver-Protokolldatei sowie ps zeigten, dass der in chrome_options.binary_location festgelegte chromedriver ausgeführt wurde, aber es gab immer einen DevToolsActivePort-Fehler. Wenn ich chrome_options.binary_location = '....' entfernt und zur Webdriver-Erstellung hinzugefügt habe, funktioniert es einwandfrei. webdriver.Chrome ('/ Pfad zu ... / chromedriver', chrome_options = chrome_options)

Vielen Dank an alle für Ihre Kommentare, die mich das Problem verstehen und lösen lassen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.