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

Kumar Sampath
quelle
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.

DebanjanB
quelle
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");
Pete Kelley
quelle
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.

Sreejith Edayillam
quelle
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)
Vinodh Periyasamy
quelle
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.

Kumar Sampath
quelle
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>
Nital
quelle
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)
Soheil Pourbafrani
quelle
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')
Lelouch
quelle
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&).

Piercarlo Slavazza
quelle
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
Osanda Deshan
quelle
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.

Radzimir
quelle
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']
    }
  },

};
user2694064
quelle
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!

parvez basha
quelle
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 =)

Sergiy Konoplyaniy
quelle
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.")
Alex
quelle
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.

Chris Moschini
quelle
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()
Adrian Jimenez
quelle
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.

Shiuu
quelle
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"
Chris
quelle
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.

Nicholas DiPiazza
quelle
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);
Radzimir
quelle
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.

Jaroslav Štreit
quelle
-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

何贤勇
quelle
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.

Obrc
quelle