ข้อความผิดพลาดนี้ ...
org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
... แสดงว่าChromeDriverไม่สามารถเริ่มต้น / วางไข่ในเว็บเบราว์เซอร์ใหม่เช่นเซสชันChrome Browser
การทดสอบโค้ดของคุณและข้อมูลการกำหนดเวอร์ชันของไบนารีทั้งหมดจะทำให้เรามีคำแนะนำบางอย่างเกี่ยวกับสิ่งที่ผิดพลาด
อย่างไรก็ตามตามเพิ่ม - ปิดการใช้งาน-dev-shm การใช้งานเพื่อเริ่มต้นการเปิดตัวธงดูเหมือนว่าการเพิ่มอาร์กิวเมนต์--disable-dev-shm-usage
จะแก้ปัญหาชั่วคราว
หากคุณต้องการเริ่มต้น / ขยายเซสชันเบราว์เซอร์ Chromeใหม่คุณสามารถใช้โซลูชันต่อไปนี้:
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 การใช้งาน
ตามbase_switches.cc disable-dev-shm-usage
น่าจะใช้ได้เฉพาะบน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
ในการสนทนาเพิ่มตัวเลือกเพื่อใช้ / tmp แทน / dev / shm David กล่าวถึง:
ฉันคิดว่ามันจะขึ้นอยู่กับว่า / dev / shm และ / tmp ติดตั้งอย่างไร หากทั้งสองติดตั้งเป็น tmpfs ฉันคิดว่าจะไม่มีความแตกต่าง ถ้าด้วยเหตุผลบางอย่าง / tmp ไม่ได้ถูกแมปเป็น tmpfs (และฉันคิดว่าถูกแมปเป็น tmpfs ตามค่าเริ่มต้นโดย systemd) การจัดการหน่วยความจำที่ใช้ร่วมกันของโครมจะแมปไฟล์ในหน่วยความจำเสมอเมื่อสร้างไฟล์ที่ไม่ระบุตัวตนร่วม แตกต่างกันมาก ฉันเดาว่าคุณสามารถบังคับใช้การทดสอบระบบโทรมาตรด้วยการเปิดใช้งานการตั้งค่าสถานะและดูว่ามันจะไปอย่างไร
สำหรับเหตุผลที่ไม่ได้ใช้งานเป็นค่าเริ่มต้นมันถูกผลักกลับโดยทีมหน่วยความจำที่ใช้ร่วมกันฉันคิดว่ามันควรจะใช้ / dev / shm สำหรับหน่วยความจำที่ใช้ร่วมกันโดยค่าเริ่มต้น
ในที่สุดสิ่งทั้งหมดนี้ควรจะย้ายไปใช้ memfd_create แต่ฉันไม่คิดว่ามันจะเกิดขึ้นได้ตลอดเวลาในเร็ว ๆ นี้เนื่องจากมันจะต้องมีการจัดการหน่วยความจำ Chrome อีกครั้งอย่างมีนัยสำคัญ
ส่งท้าย
นี่คือลิงค์ไปยังเรื่องSandbox