Thông báo lỗi này ...
org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
... ngụ ý rằng ChromeDriver không thể khởi tạo / tạo ra một WebBrowser mới, tức là phiên Trình duyệt Chrome .
Các thử nghiệm mã của bạn và thông tin phiên bản của tất cả các nhị phân sẽ cho chúng tôi một số gợi ý về những gì sai.
Tuy nhiên, theo Add --disable-dev-shm-used vào các cờ khởi chạy mặc định dường như việc thêm đối số --disable-dev-shm-usage
sẽ tạm thời giải quyết vấn đề.
Nếu bạn muốn bắt đầu / mở rộng phiên Trình duyệt Chrome mới , bạn có thể sử dụng giải pháp sau:
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");
vô hiệu hóa-dev-shm-cách sử dụng
Theo cơ sở_switches.cc disable-dev-shm-usage
dường như chỉ hợp lệ trên hệ điều hành Linux :
#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
Trong cuộc thảo luận Thêm tùy chọn để sử dụng / tmp thay vì / dev / shm David đề cập:
Tôi nghĩ rằng nó sẽ phụ thuộc vào cách / dev / shm và / tmp được gắn kết. Nếu cả hai đều được gắn kết dưới dạng tmpfs, tôi cho rằng sẽ không có sự khác biệt nào. nếu vì lý do nào đó / tmp không được ánh xạ là tmpfs (và tôi nghĩ được ánh xạ là tmpfs theo mặc định bởi systemd), quản lý bộ nhớ chia sẻ chrome luôn ánh xạ các tệp vào bộ nhớ khi tạo tệp chia sẻ ẩn danh, vì vậy ngay cả trong trường hợp đó cũng không nên khác biệt nhiều. Tôi đoán bạn có thể buộc các bài kiểm tra từ xa với cờ được kích hoạt và xem nó diễn ra như thế nào.
Về lý do tại sao không sử dụng theo mặc định, nó đã bị nhóm bộ nhớ chia sẻ đẩy lùi, tôi đoán nó có nghĩa là nó nên được sử dụng / dev / shm cho bộ nhớ chia sẻ theo mặc định.
Cuối cùng, tất cả những điều này sẽ được chuyển sang sử dụng memfd_create, nhưng tôi không nghĩ rằng điều đó sẽ xảy ra bất cứ lúc nào, vì nó sẽ yêu cầu tái cấu trúc đáng kể việc quản lý bộ nhớ Chrome.
Ra ngoài
Đây là liên kết đến câu chuyện Sandbox .