WebDriverException: अज्ञात त्रुटि: DevToolsActivePort Chrome ब्राउज़र आरंभ करने की कोशिश करते समय फ़ाइल मौजूद नहीं है


152

मैं एक यूआरएल के साथ क्रोम लॉन्च करने की कोशिश कर रहा हूं, ब्राउज़र लॉन्च होता है और इसके बाद कुछ भी नहीं होता है।

मैं 1 मिनट के बाद नीचे त्रुटि देख रहा हूं:

Unable to open browser with url: 'https://www.google.com' (Root cause: org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
  (Driver info: chromedriver=2.39.562718 (9a2698cba08cf5a471a29d30c8b3e12becabb0e9),platform=Windows NT 10.0.15063 x86_64) (WARNING: The server did not provide any stacktrace information)

मेरा विन्यास:

  • क्रोम: 66
  • ChromeBrowser: 2.39.56

पुनश्च फ़ायरफ़ॉक्स में सब कुछ ठीक काम करता है


1
क्या आप उस कोड के साथ प्रश्न को अपडेट कर सकते हैं जिससे यह त्रुटि हो रही है?
GPT14

मुझे यह त्रुटि तब मिली जब vncserver दुर्घटनाग्रस्त हो गया और मेरे पास अब कोई एक्स डिस्प्ले नहीं था
xtian

जवाबों:


71

यह त्रुटि संदेश ...

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 का उपयोग करने के लिए बढ़ रहा है, लेकिन मुझे नहीं लगता कि यह जल्द ही किसी भी समय होने जा रहा है, क्योंकि इसे क्रोम मेमोरी प्रबंधन को फिर से बनाने की आवश्यकता होगी।


किया

यहाँ सैंडबॉक्स कहानी का लिंक दिया गया है ।


8
लेकिन इस विशिष्ट त्रुटि के कारण क्या हुआ DevToolsActivePort file doesn't exist, और यह अचानक क्यों शुरू हुआ?

3
"अतिरिक्त विचार" आइटम - वे ऐसे दिखते हैं जैसे वे इस मुद्दे पर लागू होते हैं। विशेष रूप से इस तरह की स्थिति जहां इसे स्थापित नहीं किया गया था, जो समस्या का कारण बना।
पीट केली

5
@ DebanjanB की पोस्ट के हटाए गए भाग से, यह क्रोमेड्राइवर का उपयोग करने के कारण हो सकता है जो इंस्टॉल किए गए क्रोम के संस्करण का समर्थन नहीं करता है। यह हो सकता है, उदाहरण के लिए, अगर क्रोम को क्रोमेड्रिवर को अपग्रेड किए बिना क्रोम अपग्रेड किया जाता है।
एक्सपोज़

यह मेरे लिए समस्या को हल करने के लिए उपयोग किया जाता है, यह मेरी वर्तमान प्रणाली (Ubuntu 18 + पायथन 3.7) पर नहीं है
tw0000

3
मामले में यह किसी और की मदद करता है, बस जोड़ना disable-dev-shm-usageपर्याप्त नहीं था। मुझे --no-sandboxइसे काम पर लाने के लिए भी जोड़ना था । यह मेरे लिए सेलेनियम-जावा के लिए पूर्ण तय था:chromeOptions.addArguments("--no-sandbox", "--disable-dev-shm-usage");
जॉर्ज पेंटाज़ेस

52

मैंने सोमवार 2018-06-04 को इस समस्या को देखना शुरू किया। हमारे परीक्षण प्रत्येक सप्ताह के दिन चलते हैं। ऐसा प्रतीत होता है कि केवल एक चीज जो बदल गई थी, वह थी- क्रोम क्रोम वर्जन (जिसे करंट में अपडेट किया गया था) जेवीएम और सेलेनियम हाल ही में लिनक्स बॉक्स पर संस्करण थे (जावा 1.8.0_151, सेलेनियम 3.12.0, google-chrome 3.0.0.3396.62, और xvfb रन)।
विशेष रूप से " --no- सैंडबॉक्स " और " --disable-dev-shm-उपयोग " तर्कों को जोड़ने से त्रुटि बंद हो गई। मैं प्रभाव के बारे में अधिक जानकारी प्राप्त करने के लिए इन मुद्दों पर गौर करूंगा, और अन्य प्रश्नों के रूप में क्या अद्यतन करने के लिए Google-क्रोम को ट्रिगर किया जाएगा।

ChromeOptions options = new ChromeOptions();
        ...
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");

मैं स्पष्ट करना चाहता हूं कि यह कोड हर दिन एक उबंटू लिनक्स बॉक्स पर चल रहा था, लेकिन विंडोज डेस्कटॉप पर बराबर कोड सोमवार को भी ठीक चला। मुझे इस बारे में कोई जानकारी नहीं मिली है कि DevToolsActivePort फ़ाइल की कार्यक्षमता क्या है और यह उपयोगी भी होगी। पीके
पीट केली

1
इन विकल्पों ने मेरे लिए भी त्रुटि रोक दी। pd: रेल स्टैक का उपयोग करना।
मारियो पेरेज़

मुझे अभी [java] [1536892035.965][SEVERE]: Timed out receiving message from renderer: 60.000भी इसके साथ त्रुटियां मिलती हैं
जोनाथन

@ जोनाथन - हाय! क्या आप कुछ और विवरणों की आपूर्ति कर सकते हैं, जैसे कि कौन सा ओएस, आपके द्वारा उपयोग किए जा रहे घटकों के कौन से संस्करण, या आप इस प्रक्रिया को कैसे लागू कर रहे हैं?
पीट केली

@ टॉबी: हाय! मेरा तात्पर्य यह नहीं था कि स्थिति में अंतर था, बस उन मापदंडों का न्यूनतम उपयोग। ऐसा लगता था कि कुछ डिफ़ॉल्ट मान जिन पर मैंने भरोसा किया था, अपग्रेड होने पर बदल गए थे। कोई भी अन्य विवरण आपके सिस्टम या संदेश को प्रदान करता है जो आपको प्रदान करता है।
पीट केली

35

हम अपने जेंकिंस स्लेव्स (लाइनक्स मशीन) पर समान मुद्दे रख रहे थे और उपरोक्त सभी विकल्पों की कोशिश की।

केवल एक चीज जो तर्क स्थापित करने में मदद करती है

chrome_options.add_argument('--headless')

लेकिन जब हमने और छानबीन की, तो देखा कि XVFB स्क्रीन ने इस त्रुटि के कारण संपत्ति और thats शुरू नहीं की है। हमने XVFB स्क्रीन को ठीक करने के बाद, इस मुद्दे को हल किया।


2
जब C # का उपयोग करते हुए यह मेरा मुद्दा हल हो गया, (इस मामले में विकल्प इस तरह दिखता था: विकल्प
।AddArgument

XVFB मेरे लिए मुद्दा था
lucaswxp

23

मुझे अजगर में भी यही समस्या थी। ऊपर वाले ने मदद की। यहाँ मैं अजगर में क्या इस्तेमाल किया है -

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('/path/to/your_chrome_driver_dir/chromedriver',chrome_options=chrome_options)

मैंने अपनी समस्या को अपग्रेड क्रोम के साथ हल किया (मेरे पास पहले से ही नवीनतम क्रोमड्राइव था), इसलिए मुझे सामान्य ब्राउज़र को भी अपग्रेड करना पड़ा।
axel_ande

18

अपडेट करें:

मैं मुद्दे के माध्यम से प्राप्त करने में सक्षम हूं और अब मैं वांछित यूआरएल के साथ क्रोम तक पहुंचने में सक्षम हूं।

दिए गए समाधानों को आज़माने के परिणाम:

मैंने ऊपर दी गई सभी सेटिंग्स की कोशिश की लेकिन मैं इस मुद्दे को हल करने में असमर्थ था

मुद्दे के बारे में स्पष्टीकरण:

मेरे अवलोकन के अनुसार DevToolsActivePort फ़ाइल मौजूद नहीं है, जब क्रोम scoped_dirXXXXX फ़ोल्डर में इसके संदर्भ को खोजने में असमर्थ है।

समस्या को हल करने के लिए उठाए गए कदम

  1. मैंने सभी क्रोम प्रक्रियाओं और क्रोम चालक प्रक्रियाओं को मार दिया है।
  2. क्रोम को लागू करने के लिए नीचे दिया गया कोड जोड़ा गया

    System.setProperty("webdriver.chrome.driver","pathto\\chromedriver.exe");    
    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver = new ChromeDriver(options);
    driver.get(url);
    

उपरोक्त चरणों का उपयोग करके मैं इस मुद्दे को हल करने में सक्षम था।

आपके उत्तर के लिए धन्यवाद।


3
क्या आप जानते हैं कि उपयोग को क्या प्रभावित करता है। यह स्वचालन के लिए एक्सटेंशन अक्षम करता है (स्क्रीनशॉट / नियंत्रण आदि) नहीं? DevTools के आगमन को इस बदलाव को प्रभावित नहीं करना चाहिए? codereview.chromium.org/2785413002
Toby

10

मैं हाल ही में इसी मुद्दे का सामना कर रहा था और कुछ परीक्षण और त्रुटि के बाद इसने मेरे लिए भी काम किया।

शीर्ष पर होना चाहिए:

options.addArguments("--no-sandbox"); //has to be the very first option

BaseSeleniumTests.java

public abstract class BaseSeleniumTests {

    private static final String CHROMEDRIVER_EXE = "chromedriver.exe";
    private static final String IEDRIVER_EXE = "IEDriverServer.exe";
    private static final String FFDRIVER_EXE = "geckodriver.exe";
    protected WebDriver driver;

    @Before
    public void setUp() {
        loadChromeDriver();
    }

    @After
    public void tearDown() {
        if (driver != null) {
            driver.close();
            driver.quit();
        }
    }

    private void loadChromeDriver() {
        ClassLoader classLoader = getClass().getClassLoader();
        String filePath = classLoader.getResource(CHROMEDRIVER_EXE).getFile();
        DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        ChromeDriverService service = new ChromeDriverService.Builder()
                .usingDriverExecutable(new File(filePath))
                .build();
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--no-sandbox"); // Bypass OS security model, MUST BE THE VERY FIRST OPTION
        options.addArguments("--headless");
        options.setExperimentalOption("useAutomationExtension", false);
        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.merge(capabilities);
        this.driver = new ChromeDriver(service, options);
    }

}

GoogleSearchPageTraditionalSeleniumTests.java

@RunWith(SpringRunner.class)
@SpringBootTest
public class GoogleSearchPageTraditionalSeleniumTests extends BaseSeleniumTests {

    @Test
    public void getSearchPage() {
        this.driver.get("https://www.google.com");
        WebElement element = this.driver.findElement(By.name("q"));
        assertNotNull(element);
    }

}

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <scope>test</scope>
        </dependency>
</dependencies>

दिलचस्प है! आप इनसाइड फाइल कैसे बनाते हैं? यह कुछ ऐसा है जो एक क्यूए व्यक्ति मैन्युअल रूप से करता है?
Nital

आप टेस्ट रिकॉर्ड करने के लिए सेलेनियम आईडीई का उपयोग करते हैं। परिणाम एक। उल्टा फ़ाइल है। यह आईडीई का उपयोग करके ठीक चलता है, लेकिन मैं इसे सेलेनियम-साइड-रनर का उपयोग करके चलाने की कोशिश कर रहा हूं, लेकिन क्रोमेड्रिवर के साथ सभी प्रकार की समस्याओं में चल रहा है।
pabrams

पहला विकल्प होना चाहिए - इस haha ​​को खोजने के लिए दिन
बिताएं

धन्यवाद! "-नो-सैंडबॉक्स" जोड़ने से मेरी समस्या हल हो गई।
Matabares

7

निम्नलिखित वातावरण में मेरे मामले में:

  • विंडोज 10
  • अजगर 3.7.5
  • Google Chrome संस्करण 80 और पथ में संगत ChromeDriver C:\Windows
  • सेलेनियम 3.141.0

मैं तर्क को जोड़ने के लिए की जरूरत है --no-sandboxऔर --remote-debugging-port=9222करने के लिए ChromeOptionsवस्तु और प्रशासक के रूप में Powershell / cmd लंच लेने से उपयोगकर्ता व्यवस्थापक के रूप में कोड चलाते हैं।

यहाँ संबंधित कोड है:

options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('--disable-infobars')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--no-sandbox')
options.add_argument('--remote-debugging-port=9222')
driver = webdriver.Chrome(options=options)

1
ubuntu 18.04, py3.7, क्रोम (ड्राइवर) 80
patroqueeet

यह आगे के मुद्दों के बिना मेरे लिए काम किया। मैंने आज ही इस मुद्दे पर भागना शुरू कर दिया था, लेकिन आपके जवाब के कारण यह जल्दी तय हो गया! मेरा वातावरण मूलत: तुम्हारा ही है।
रयान हैरिस

5

मैं पहली बार क्रोमथ्रिवर को अलग-अलग डाउनलोड करने और फिर sudo apt install chromium-browserभी समान संस्करण का उपयोग करने के बाद भी उबंटू 20 पर इस समस्या में पाइथन सेलेनियम के साथ चला ।

मेरा फिक्स प्रदान किए गए क्रोम ड्राइवर का उपयोग करना था जो रेपो पैकेज में स्थित था

/snap/bin/chromium.chromedriver

driver = webdriver.Chrome(chrome_options=options, executable_path='/snap/bin/chromium.chromedriver')

4

जैसा कि इस अन्य उत्तर में कहा गया है :

यह त्रुटि संदेश ... तात्पर्य है कि ChromeDriver एक नया WebBrowser यानी Chrome Browser सत्र आरंभ / करने में असमर्थ था।

संभावित कारणों के अलावा, मैं तथ्य यह है कि इस मामले में आप Xvfb के माध्यम से एक बिना सिर क्रोमियम चल रहे हैं उल्लेख करना चाहते हैं, तो आप कर सकते हैं की जरूरत है चर: मेरे मामले में, मैं जगह में था (के रूप में सिफारिश) और विकल्प, सब कुछ था ठीक चल रहा है, लेकिन एक नई स्थापना में नवीनतम (लेखन के समय) उबंटू 18.04 चल रहा है यह त्रुटि उत्पन्न होने लगी, और एकमात्र संभव समाधान एक निष्पादित करना था (पहले से Xvfb शुरू होने के साथ )।exportDISPLAY--disable-dev-shm-usage--no-sandboxexport DISPLAY=":20"Xvfb :20&


OMG धन्यवाद। मैं हमारे docker कंटेनर में कुछ बदलाव कर रहा था और मैंने गलती से xvfb छोड़ दिया। मुझे यह कभी नहीं मिला होता अगर आपने इसे यहां नहीं छोड़ा होता :-)।
रयान

3

मैंने jenkins सर्वर के साथ एकीकरण करते समय इस समस्या का भी सामना किया, मुझे jenkin जॉब के लिए रूट यूजर का उपयोग किया गया था , यह मुद्दा तब तय किया गया था जब मैंने उपयोगकर्ता को अन्य उपयोगकर्ता में बदल दिया था । मुझे यकीन नहीं है कि रूट उपयोगकर्ता के लिए यह त्रुटि क्यों होती है।

  • Google Chrome संस्करण 71.0
  • क्रोमड्राइवर संस्करण 2.45
  • CentOS7 संस्करण 1.153

गैर-रूट उपयोगकर्ता ने मेरे लिए काम किया, मेरे पास क्रोमियम के लिए सही क्रोम ड्राइवर संस्करण था।
19

2

मेरे मामले में यह तब हुआ जब मैंने अपने डिफ़ॉल्ट उपयोगकर्ता प्रोफ़ाइल का उपयोग करने की कोशिश की है:

...
options.addArguments("user-data-dir=D:\\MyHomeDirectory\\Google\\Chrome\\User Data");
...

यह पृष्ठभूमि में पहले से चल रही प्रक्रियाओं का पुन: उपयोग करने के लिए क्रोम को ट्रिगर करता है, इस तरह से, क्रोमेड्रिवर। Exe द्वारा शुरू की गई प्रक्रिया बस समाप्त हो गई।

रिज़ॉल्यूशन: पृष्ठभूमि में चल रही सभी chrome.exe प्रक्रियाओं को मारें।


मेरे पास एक समान मुद्दा था, लेकिन लिनेक्स में - स्क्रिप्ट के दुर्घटनाग्रस्त होने के बाद मेरी क्रोम प्रक्रियाओं को ठीक से बाहर नहीं किया गया था, और उनका गलत तरीके से पुन: उपयोग किया जा रहा था। उन्हें मारने से समस्या हल हो गई
jememycg

2

के रूप में conf.js में अद्यतन क्षमताओं

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['todo-spec.js'],
  capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: ['--disable-gpu', '--no-sandbox', '--disable-extensions', '--disable-dev-shm-usage']
    }
  },

};

2

मेरे मामले में, मैं क्रोम ब्राउज़र के साथ विंडोज ओएस पर एक रन करने योग्य जार बनाने की कोशिश कर रहा था और इस पर CentOs के साथ यूनिक्स बॉक्स में हेडलेस मोड पर समान चलाना चाहता हूं। और मैं अपने बाइनरी को एक ड्राइवर को इंगित कर रहा था जिसे मैंने अपने सूट के साथ डाउनलोड और पैक किया है। मेरे लिए, यह मुद्दा नीचे जोड़ने के बावजूद जारी है:

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("--no-sandbox");
System.setProperty("webdriver.chrome.args", "--disable-logging");
System.setProperty("webdriver.chrome.silentOutput", "true");
options.setBinary("/pointing/downloaded/driver/path/in/automationsuite");
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
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("window-size=1024,768"); // Bypass OS security model
options.addArguments("--log-level=3"); // set log level
options.addArguments("--silent");//
options.setCapability("chrome.verbose", false); //disable logging
driver = new ChromeDriver(options);

समाधान है कि मैंने कोशिश की है और मेरे लिए काम किया है, मेजबान VM / Unix बॉक्स पर क्रोम और उसके उपकरण डाउनलोड करें, स्वचालन सूट और बिंगो में इस पर बाइनरी को स्थापित और इंगित करें! यह काम करता हैं :)

डाउनलोड कमांड:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

कमांड स्थापित करें:

sudo yum install -y ./google-chrome-stable_current_*.rpm

Google- क्रोम के बाइनरी पथ के साथ अद्यतन सुइट:

options.setBinary("/opt/google/chrome/google-chrome");

और .. यह काम करता है!


हम इस कोड को कहां जोड़ते हैं? मैं अपनी उलटी फ़ाइल में कोई C # कोड नहीं देखता
pabrams

1

मेरे पास एक ही मुद्दा था, लेकिन मेरे मामले में क्रोम को पहले उपयोगकर्ता अस्थायी फ़ोल्डर में स्थापित किया गया था, उसके बाद प्रोग्राम फ़ाइलों को फिर से इंस्टॉल किया गया था। तो यहाँ प्रदान किया गया कोई भी समाधान मेरी मदद नहीं कर रहा था। लेकिन अगर chrome.exe को सभी कार्य प्रदान करते हैं:

chromeOptions.setBinary("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");

मुझे उम्मीद है कि यह किसी को मदद करता है =)


@ शशि के ठीक विपरीत विपरीत लगता है
टोबी

1

मेरे लिए कोई समाधान काम नहीं आया। लेकिन यहाँ एक समाधान है:

maxcounter=5
for counter in range(maxcounter):
    try:           
        driver = webdriver.Chrome(chrome_options=options,
                          service_log_path=logfile,
                          service_args=["--verbose", "--log-path=%s" % logfile])
        break
    except WebDriverException as e:
        print("RETRYING INITIALIZATION OF WEBDRIVER! Error: %s" % str(e))
        time.sleep(10)
        if counter==maxcounter-1:
            raise WebDriverException("Maximum number of selenium-firefox-webdriver-retries exceeded.")

1

आप यह त्रुटि केवल क्रोम में खराब तर्क पारित करने के लिए प्राप्त कर सकते हैं। उदाहरण के लिए, यदि मैं "headless"C # ChromeDriver के लिए एक arg के रूप में पास होता हूं, तो यह बहुत अच्छा होता है। अगर मैं गलती करता हूं और गलत सिंटैक्स का उपयोग करता "--headless"हूं, तो मुझे DevToolsActivePort file doesn't existत्रुटि मिलती है ।


1

मैं एक ही मुद्दे में भाग गया, मैं UBUNTU, PYTHON और OPERA ब्राउज़र का उपयोग कर रहा हूं । मेरे मामले में समस्या उत्पन्न हुई थी क्योंकि मेरे पास ऑपेराडाइवर का पुराना संस्करण था।

समाधान: 1. सुनिश्चित करें कि आप नवीनतम ओपेरा ब्राउज़र संस्करण स्थापित करें (ओपेरा बीटा या ओपेरा डेवलपर का उपयोग न करें), इसके लिए आधिकारिक ओपेरा साइट पर जाएं और वहां से नवीनतम ओपेरा संस्करण डाउनलोड करें।

  1. नवीनतम ओपेरा ड्राइवर स्थापित करें (यदि आपके पास पहले से एक ओपेरा चालक स्थापित है, तो आपको इसे पहले sudo rm का उपयोग करना होगा ...)

wget https://github.com/operasoftware/operachromiumdriver/releases/download/v.80.0.3987.100/operadriver_linux64.zip

   unzip operadriver_linux64.zip
   sudo mv operadriver /usr/bin/operadriver
   sudo chown root:root /usr/bin/operadriver
   sudo chmod +x /usr/bin/operadriver

मेरे मामले में नवीनतम 80.0.3987 था जैसा कि आप देख सकते हैं

  1. इसके अतिरिक्त मैंने क्रोमेड्रिवर भी स्थापित किया है (लेकिन चूंकि मैंने परीक्षण से पहले इसे किया था, मुझे इसकी जानकारी नहीं है) क्रोमेड्राइवर को स्थापित करने के लिए, पिछले चरण के चरणों का पालन करें: v

  2. आनंद लें और मुझे धन्यवाद!

नमूना सेलेनियम कोड

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Opera()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.quit()

0

ऐसा लगता है कि इस त्रुटि के कई संभावित कारण हैं। हमारे मामले में, त्रुटि इसलिए हुई क्योंकि हमारे पास कोड में निम्नलिखित दो लाइनें थीं:

System.setProperty("webdriver.chrome.driver", chromeDriverPath);
chromeOptions.setBinary(chromeDriverPath);

दूसरी लाइन को हटाकर इसे हल किया गया है।


@ सर्गिय-कोनोपलियानी ठीक ऊपर के विपरीत लगता है: '(
टोबी

हमारे सेटबिनरी में, हमने क्रोम ड्राइवर सेट करने की कोशिश की, जो एक गलती लगती है। @ sergiy-konoplyaniy का सेट chrome.exe सेटबिनरी के माध्यम से सेट होता है।
शिउ

आपके पास यह कोड कहां था? मेरे पास सब कुछ उल्टा फ़ाइल है, और इसमें कोई C # कोड नहीं है।
पैबाम्स

0

मैं एक ही मुद्दे में क्रोम / डॉक कंटेनर में बेहट / मिंक और सेलेनियम के माध्यम से चल रहा था। कुछ उधेड़बुन के बाद, मैं निम्नलिखित पर पहुंचा behat.ymlजो उपरोक्त उल्लिखित स्विचों की आपूर्ति करता है। ध्यान दें कि वे सभी मुझे सफलतापूर्वक चलाने के लिए आवश्यक थे।

default:
    extensions:
        Behat\MinkExtension:
            base_url: https://my.app/
            default_session: selenium2
            selenium2:
                browser: chrome
                capabilities:
                    extra_capabilities:
                        chromeOptions:
                            args:
                                - "headless"
                                - "no-sandbox"
                                - "disable-dev-shm-usage"

0

मेरे मामले में, मैं एक कुबेरनेट्स वातावरण में हूं जहां मैं डिफ़ॉल्ट TMPDIR का उपयोग नहीं कर सकता क्योंकि यह कचरा के साथ अस्थायी निर्देशिका को भर देगा।

इसलिए मैं एक अलग tmpdir का उपयोग करने के लिए इसका उपयोग कर रहा था:

driver = new ChromeDriver(new ChromeDriverService.Builder()
                    .withEnvironment(ImmutableMap.of("TMPDIR", customTmpPath))
                    .build(), options);

लेकिन अब जब मैंने सब कुछ लेटेस्ट में अपग्रेड कर दिया है, तो यह काम नहीं करता है। मुझे ऐसा करने के लिए एक नया तरीका खोजने की आवश्यकता होगी।


0

यह तब होता है जब क्रोमेड्रिवर यह पता लगाने में विफल रहता है कि पोर्ट क्रोम क्या डिबगिंग का उपयोग कर रहा है।

एक संभावित कारण HKEY_CURRENT_USER \ Software \ नीतियाँ \ Google \ Chrome \ User \ _ataatair के साथ एक खुला दोष है

लेकिन मेरे आखिरी मामले में, यह कुछ अन्य अज्ञात कारण था।

सौभाग्य से पोर्ट नंबर मैन्युअल रूप से काम कर रहा है:

final String[] args = { "--remote-debugging-port=9222" };
options.addArguments(args);
WebDriver driver = new ChromeDriver(options);

2
क्या यह एक निरंतर बंदरगाह है? या मैं इसके लिए कहां देख सकता हूं?
माइक शियान

0

मेरे मामले में गलत पोर्ट नंबर। सेलेनियम सर्वर शुरू करते समय पोर्ट नंबर की जाँच करें कि आपकी स्क्रिप्ट में क्या है।


-2

मैं स्थापित करके इस समस्या को हल करता हूं yum -y install gtk3-devel gtk3-devel-docs", यह ठीक काम करता है

मेरा काम env है:

Selenium Version 3.12.0
ChromeDriver Version v2.40
Chrome 68 level

इससे पहले:
यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें

उपरांत:
यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें


9
समीक्षा से: कृपया छवियों में पाठ पोस्ट न करें। अपना उत्तर संपादित करें और उन छवियों को पाठ के साथ बदलें। धन्यवाद
sɐunıɔ ןɐ qɐp

1
क्या यह किसी के लिए समस्या का समाधान करता है? यह मेरे लिए समस्या का समाधान नहीं था
Bendram

-2

चूंकि इस प्रकार की त्रुटि के लिए यह सबसे सक्रिय संदेश है, इसलिए मैं अपने समाधान का उल्लेख करना चाहता था (इसे ठीक करने के लिए घंटे खर्च करने के बाद)।

उबंटू 18.04 पर, Chrome 70 और Chromedriver 2.44 और Python3 का उपयोग करके मैं एक ही DevToolsActivePort त्रुटि प्राप्त करता रहा, तब भी जब मैंने ऊपर सूचीबद्ध सभी विकल्पों को अक्षम कर दिया। क्रोमड्राइवर लॉग फ़ाइल के साथ-साथ पीएस ने दिखाया कि क्रोमडाइवर I ने क्रोम_पॉइंट्स में सेट किया था। बेसिन_लोकेशन चल रहा था, लेकिन इसने हमेशा DevToolsActivePort त्रुटि दी। जब मैंने chrome_options.binary_location = '....' को हटा दिया और इसे वेबड्राइवर निर्माण में जोड़ दिया, तो मुझे ठीक काम करना पड़ेगा। webdriver.Chrome ('/ path to ... / chromedriver', chrome_options = chrome_options)

आपकी टिप्पणियों के लिए हर कोई धन्यवाद जो मुझे समझ में आता है और समस्या को हल करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.