Como resolver o erro O arquivo geckodriver.exe está sendo usado por outro processo usando o Firefox e o Selênio C#

0

Pergunta

Estou tentando executar o meu teste no Chrome e no Firefox usando selenium c#. O problema é que, quando instalar o Selenium.WebDriver.GeckoDriver para ser capaz de executar o teste no navegador Firefox, ele quebra o meu código e eu não sou capaz de executar o teste no chrome ou Firefox. Alguma idéia?

Eu tenho instalado

  • O selênio.WebDriver
  • O selênio.WebDriver.ChromeDriver
  • O selênio.O Firefox.WebDriver
  • O selênio.WebDriver.GeckoDriver

Erro:

The file geckodriver.exe is being used by another process   

Outro erro:

The file is locked by geckodriver

Código de ensaios:

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

Melhor resposta

1

Esta mensagem de erro...

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

e

The file is locked by geckodriver

...implica que existem residual GeckoDriver processos anteriores a execução do teste ocupando a memória do sistema.

A menos que aqueles balançando GeckoDriver processos são removidos seu programa, gostaria de ser incapaz de iniciar uma nova GeckoDriver serviço.

Para matar o residual de processos você pode usar o seguinte bloco de código:

  • Usando GetProcessesByName():

    foreach (var process in Process.GetProcessesByName("geckodriver"))
    {
        process.Kill();
    }
    
  • Usando Process.GetProcesses() filtrando os processos necessários:

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

Solução Ideal

Idealmente, para se livrar deste redundante processo de invocar sempre driver.quit() dentro tearDown(){} método para fechar e destruir o WebDriver e Cliente Web instâncias normalmente.


Referências

Você pode encontrar um par de relevantes discussões detalhadas em:

2021-11-23 05:23:33

Onde no meu código eu devo usar este Método?
Yorda

@Yorda Verifique as adicionados detalhes e referências.
DebanjanB

Eu tenho subdivisão no meu código, mas foi comentada. Eu vou desmarcar. Obrigado
Yorda

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................