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-usage
wird 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.