Cum pentru a aborda eroare de fișier geckodriver.exe este utilizat de un alt proces, folosind Firefox și Seleniu C#

0

Problema

Eu sunt încercarea de a rula testul meu în Chrome și Firefox folosind seleniu c#. Problema este, atunci când instalați Seleniu.WebDriver.GeckoDriver să fie capabil de a rula testul pe browser-ul Firefox mi se rupe codul meu și eu nu sunt capabil de a rula testul în chrome sau Firefox. Vreo idee?

Am instalat

  • Seleniu.WebDriver
  • Seleniu.WebDriver.ChromeDriver
  • Seleniu.Firefox.WebDriver
  • Seleniu.WebDriver.GeckoDriver

Eroare:

The file geckodriver.exe is being used by another process   

Un alt eroare:

The file is locked by geckodriver

Cod probe:

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

Cel mai bun răspuns

1

Acest mesaj de eroare...

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

și

The file is locked by geckodriver

...presupune că există reziduale GeckoDriver procesele de testul anterior de execuție ocupă memoria sistemului.

Excepția cazului în care aceste cununi GeckoDriver procese sunt eliminate programul tău ar fi în imposibilitatea de a începe un nou GeckoDriver serviciu.

Pentru a ucide reziduale procese puteți utiliza următoarele bloc de cod:

  • Folosind GetProcessesByName():

    foreach (var process in Process.GetProcessesByName("geckodriver"))
    {
        process.Kill();
    }
    
  • Folosind Process.GetProcesses() filtrarea procesele necesare:

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

Soluție Ideală

În mod ideal, pentru a scăpa de această redundante proces invocă întotdeauna driver.quit() în tearDown(){} metoda de a închide și de a distruge WebDriver și Client Web cazuri cu grație.


Referințe

Puteți găsi o serie de relevante discuții detaliate în:

2021-11-23 05:23:33

În cazul în care în codul meu ar trebui să folosesc această Metodă?
Yorda

@Yorda Verificați adăugat detalii și referințe.
DebanjanB

Am teardown în codul meu, dar a fost comentat. Am să debifați asta. Multumesc
Yorda

În alte limbi

Această pagină este în alte limbi

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