WebDriverException: неизвестная ошибка: файл DevToolsActivePort не существует при попытке запуска браузера Chrome - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь запустить Chrome с URL-адресом, браузер запускается, и после этого ничего не происходит.

Через 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)

Моя конфигурация:

Chrome: 66 ChromeBrowser: 2.39.56

PS В Firefox все отлично работает

Ответы [ 18 ]

0 голосов
/ 19 июня 2019

Я столкнулся с той же проблемой при запуске Chrome через Behat / Mink и Selenium в контейнере Docker.После некоторой путаницы я пришел к следующему 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 голосов
/ 20 января 2019

обновить возможности в файле 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']
    }
  },

};
0 голосов
/ 11 февраля 2019

Недавно я столкнулся с той же проблемой, и после некоторых проб и ошибок она сработала и для меня.

ДОЛЖЕН БЫТЬ НА ТОП:

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>
0 голосов
/ 04 декабря 2018

Кажется, есть много возможных причин этой ошибки.В нашем случае ошибка произошла из-за того, что в коде были две следующие строки:

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

Исправлена ​​путем удаления второй строки.

0 голосов
/ 10 января 2019

Я также сталкивался с этой проблемой при интеграции с сервером jenkins, для задания jenkin использовался пользователь root , проблема была исправлена, когда я сменил пользователя на другого пользователя .Я не уверен, почему эта ошибка возникает для пользователя root.

Google Chrome версии 71.0

ChromeDriver версии 2.45

CentOS7 версии 1.153

0 голосов
/ 06 июня 2018

Я начал видеть эту проблему в понедельник 2018-06-04.Наши тесты проводятся каждый будний день.Похоже, что единственное, что изменилось, это версия google-chrome (которая была обновлена ​​до текущей версии), JVM и Selenium были последними версиями для Linux (Java 1.8.0_151, selenium 3.12.0, google-chrome 67.0.3396.62 иxvfb-run).
Конкретное добавление аргументов " - no-sandbox " и " - disable-dev-shm-using " остановило ошибку.Я рассмотрю эти вопросы, чтобы найти дополнительную информацию об эффекте и другие вопросы, например, что вызвало обновление Google-Chrome.

ChromeOptions options = new ChromeOptions();
        ...
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");
0 голосов
/ 28 ноября 2018

Поскольку это наиболее активное сообщение для ошибок такого типа, я хотел бы упомянуть свое решение (потратив на это несколько часов).

В Ubuntu 18.04 с использованием Chrome 70 и Chromedriver 2.44, а также Python3Я продолжал получать ту же ошибку DevToolsActivePort, даже когда я отключил все опции, перечисленные выше.Файл журнала chromedriver, также как и ps, показал, что хромедрайвер, который я установил в chrome_options.binary_location, работал, но всегда выдавал ошибку DevToolsActivePort.Когда я удалил chrome_options.binary_location = '....' и добавил его в создание веб-драйвера, я понял, что он работает нормально.webdriver.Chrome ('/ path to ... / chromedriver', chrome_options = chrome_options)

Спасибо всем за ваши комментарии, которые помогают мне понять и решить проблему.

0 голосов
/ 30 октября 2018

Ни одно решение не сработало для моего.Но вот обходной путь:

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.")
0 голосов
/ 15 ноября 2018

В моем случае это произошло, когда я попытался использовать свой профиль пользователя по умолчанию:

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

Этот запущенный Chrome для повторного использования процессов, уже запущенных в фоновом режиме, таким образом, что процесс запущен chromedriver.exe просто завершился.

Разрешение: убить все процессы chrome.exe, работающие в фоновом режиме.

0 голосов
/ 25 июля 2018

У нас были те же проблемы с нашими рабами jenkins (машина linux) и мы пробовали все варианты, описанные выше.

Единственное, что помогло - это установить аргумент

chrome_options.add_argument('--headless')

Но когда мы продолжили исследование, заметили, что экран XVFB не запускает свойство и это вызывает эту ошибку.После того, как мы исправили экран XVFB, он решил проблему.

...