यह त्रुटि संदेश ...
org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
... तात्पर्य है कि ChromeDriver एक नया WebBrowser यानी Chrome Browser सत्र आरंभ / करने में असमर्थ था ।
आपका कोड परीक्षण और सभी बायनेरिज़ की संस्करण जानकारी ने हमें कुछ संकेत दिया है कि क्या गलत हो रहा है।
हालाँकि, ऐड-डिसेबल-डेम-शम-डिफॉल्ट टू डिफॉल्ट लॉन्च फ्लैग के अनुसार , तर्क जोड़ने --disable-dev-shm-usage
से समस्या अस्थायी रूप से हल हो जाएगी।
यदि आप एक नया क्रोम ब्राउज़र सत्र आरंभ / करने की इच्छा रखते हैं, तो आप निम्न समाधान का उपयोग कर सकते हैं:
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");
अक्षम-देव-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
चर्चा में / dev / shm डेविड उल्लेख के बजाय / tmp का उपयोग करने का विकल्प जोड़ें :
मुझे लगता है कि यह इस बात पर निर्भर करेगा कि कैसे / dev / shm और / tmp घुड़सवार हैं। यदि वे दोनों tmpfs के रूप में घुड़सवार हैं तो मैं मान रहा हूँ कि कोई अंतर नहीं होगा। यदि किसी कारण से / tmp को tmpfs के रूप में मैप नहीं किया जाता है (और मुझे लगता है कि systemd द्वारा डिफ़ॉल्ट रूप से tmpfs के रूप में मैप किया गया है), तो क्रोम साझा मेमोरी प्रबंधन हमेशा अनाम साझा की गई फ़ाइलों को बनाते समय मेमोरी में फाइलों को मैप करता है, इसलिए उस स्थिति में भी नहीं होना चाहिए बहुत अंतर। मुझे लगता है कि आप सक्षम ध्वज के साथ टेलीमेट्री परीक्षणों को बल दे सकते हैं और देख सकते हैं कि यह कैसे जाता है।
जैसे कि डिफ़ॉल्ट रूप से उपयोग क्यों नहीं किया जाता है, यह साझा मेमोरी टीम द्वारा वापस धकेल दिया गया था, मुझे लगता है कि यह समझ में आता है कि इसे डिफ़ॉल्ट रूप से साझा मेमोरी के लिए उपयोग करना चाहिए / dev / shm।
अंततः यह सब memfd_create का उपयोग करने के लिए बढ़ रहा है, लेकिन मुझे नहीं लगता कि यह जल्द ही किसी भी समय होने जा रहा है, क्योंकि इसे क्रोम मेमोरी प्रबंधन को फिर से बनाने की आवश्यकता होगी।
किया
यहाँ सैंडबॉक्स कहानी का लिंक दिया गया है ।