Pesan kesalahan ini ...
org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
... menyiratkan bahwa ChromeDriver tidak dapat memulai / menelurkan WebBrowser baru yaitu sesi Browser Chrome .
Uji coba kode Anda dan informasi versi semua binari akan memberi kami beberapa petunjuk tentang apa yang salah.
Namun per Add --disable-dev-shm-use ke flag-flag peluncuran default tampaknya menambahkan argumen --disable-dev-shm-usage
sementara akan menyelesaikan masalah.
Jika Anda ingin memulai / span sesi Browser Chrome baru Anda dapat menggunakan solusi berikut:
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-use
Per base_switches.cc disable-dev-shm-usage
tampaknya hanya valid di Linux OS :
#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
Dalam diskusi Tambahkan opsi untuk menggunakan / tmp alih-alih / dev / shm David menyebutkan:
Saya pikir ini akan tergantung pada bagaimana / dev / shm dan / tmp dipasang. Jika keduanya dipasang sebagai tmpfs saya berasumsi tidak akan ada perbedaan. jika karena alasan tertentu / tmp tidak dipetakan sebagai tmpfs (dan saya pikir dipetakan sebagai tmpfs secara default oleh systemd), manajemen memori bersama chrome selalu memetakan file ke dalam memori saat membuat file bersama anonim, sehingga bahkan dalam kasus itu tidak boleh banyak perbedaan. Saya kira Anda bisa memaksa tes telemetri dengan bendera diaktifkan dan lihat bagaimana hasilnya.
Adapun mengapa tidak digunakan secara default, itu didorong kembali oleh tim memori bersama, saya kira masuk akal itu harus menggunakan / dev / shm untuk memori bersama secara default.
Pada akhirnya semua ini harus bergerak untuk menggunakan memfd_create, tetapi saya tidak berpikir itu akan terjadi dalam waktu dekat, karena itu akan memerlukan refactoring manajemen memori Chrome secara signifikan.
Outro
Berikut tautan ke kisah Sandbox .