Jak usunąć błąd w pliku geckodriver.exe jest używany przez inny proces korzystający z Firefox i Selenium C#

0

Pytanie

Próbuję uruchomić swój test w Chrome i Firefox, za pomocą selenium c#. Problem w tym, że podczas instalacji Selenu.Web-sterownik.GeckoDriver, aby móc uruchomić test w przeglądarce Firefox, łamie mój kod i nie mogę uruchomić test w chrome lub Firefox. Jakieś pomysły?

Zainstalowałem

  • Selen.Web-sterownik
  • Selen.Web-sterownik.Chromowany napęd
  • Selen.Przeglądarka Firefox.Web-sterownik
  • Selen.Web-sterownik.Геккодрайвер

Błąd:

The file geckodriver.exe is being used by another process   

Jeszcze jeden błąd:

The file is locked by geckodriver

Testowanie kodu:

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

Najlepsza odpowiedź

1

Ten komunikat o błędzie...

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

i

The file is locked by geckodriver

...oznacza, że w pamięci systemu dostępne są pozostałe procesy GeckoDriver od poprzedniego testu.

Jeśli te zamrożonych procesy GeckoDriver nie zostaną usunięte, twój program nie będzie w stanie uruchomić nową usługę GeckoDriver.

Do niszczenia pozostałości procesów można użyć poniższy blok kodu:

  • Z pomocąGetProcessesByName():

    foreach (var process in Process.GetProcessesByName("geckodriver"))
    {
        process.Kill();
    }
    
  • Z pomocąProcess.GetProcesses() отфильтровывание niezbędnych procesów:

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

Idealne Rozwiązanie

Najlepiej, aby pozbyć się tego nadmiaru procesu, zawsze dzwoń driver.quit() wewnątrz tearDown(){} sposób eleganckiego zamknięcia i zniszczenia wystąpień WebDriver i klienta sieci web.


Zalecenia

Można znaleźć kilka odpowiednich szczegółowych dyskusji w:

2021-11-23 05:23:33

Gdzie w moim kodzie muszę korzystać z tej metody?
Yorda

@Yorda Sprawdź dodane szczegóły i linki.
DebanjanB

Mam luki w moim kodzie, ale został skomentowany. Zdejmę to pole wyboru. Dziękuję
Yorda

W innych językach

Ta strona jest w innych językach

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