Как устранить ошибку в файле geckodriver.exe используется другим процессом, использующим Firefox и Selenium C#

0

Вопрос

Я пытаюсь запустить свой тест в Chrome и Firefox, используя selenium c#. Проблема в том, что при установке Селена.Веб-драйвер.GeckoDriver, чтобы иметь возможность запустить тест в браузере Firefox, он нарушает мой код, и я не могу запустить тест в chrome или Firefox. Есть идеи?

Я установил

  • Селен.Веб-драйвер
  • Селен.Веб-драйвер.Хромированный привод
  • Селен.Браузер Firefox.Веб-драйвер
  • Селен.Веб-драйвер.Геккодрайвер

Ошибка:

The file geckodriver.exe is being used by another process   

Еще одна ошибка:

The file is locked by geckodriver

Испытания кода:

using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
using System;

    internal class Program
        {
            IWebDriver driver = new ChromeDriver();
            //IWebDriver driver = new FirefoxDriver();
            static void Main(string[] args)
            {
            }
            [SetUp] //method to initialize page with windows maximized. 
            public void Initialize()
            {
                driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(30);
                driver.Navigate().GoToUrl("https://www.demo.bnz.co.nz/client/");
                driver.Manage().Window.Maximize();
                driver.Manage().Cookies.DeleteAllCookies();
            }
public void Payees()
        {
            System.Threading.Thread.Sleep(10000); //verify if page is loaded 
            IWebElement element = driver.FindElement(By.XPath("//*[@id='left']/div[1]/div/button"));//menu            
            element.Click();
            driver.FindElement(By.XPath("//*[@id='left']/div[1]/div/div[3]/section/div[2]/nav[1]/ul/li[3]/a")).Click(); //payes
        }
c# firefox geckodriver selenium
2021-11-23 04:45:24
1

Лучший ответ

1

Это сообщение об ошибке...

"The file geckodriver.exe is being used by another process

и

The file is locked by geckodriver

...подразумевает, что в памяти вашей системы имеются остаточные процессы GeckoDriver от предыдущего выполнения теста.

Если эти зависшие процессы GeckoDriver не будут удалены, ваша программа не сможет запустить новую службу GeckoDriver.

Для уничтожения остаточных процессов вы можете использовать следующий блок кода:

  • С помощьюGetProcessesByName():

    foreach (var process in Process.GetProcessesByName("geckodriver"))
    {
        process.Kill();
    }
    
  • С помощьюProcess.GetProcesses() отфильтровывание необходимых процессов:

    var chromeDriverProcesses = Process.GetProcesses();
        Where(pr => pr.ProcessName == "chromedriver"); // without .exe
    
    foreach (var process in chromeDriverProcesses)
    {
       process.Kill();
    }
    

Идеальное Решение

В идеале, чтобы избавиться от этого избыточного процесса, всегда вызывайте driver.quit() внутри tearDown(){} способ изящного закрытия и уничтожения экземпляров WebDriver и веб-клиента.


Рекомендации

Вы можете найти несколько соответствующих подробных обсуждений в:

2021-11-23 05:23:33

Где в моем коде я должен использовать этот метод?
Yorda

@Yorda Проверьте добавленные детали и ссылки.
DebanjanB

У меня есть разрыв в моем коде, но он был прокомментирован. Я сниму этот флажок. Спасибо
Yorda

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................