如何解决错误文件geckodriver.exe正被另一个使用Firefox和Selenium C#的进程使用



我正试图使用selenium c#在Chrome和Firefox中运行我的测试。问题是,当安装Selenium.WebDriver.GeckoDriver以便能够在Firefox浏览器上运行测试时,它破坏了我的代码,我无法在chrome或Firefox中运行测试。知道吗?

我安装了

  • Selenium.WebDriver
  • Selenium.WebDriver.ChromeDriver
  • Selenium.Firefox.WebDriver
  • Selenium.WebDriver.GeckoDriver

错误:

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
}

此错误消息。。。

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

The file is locked by geckodriver

意味着上一次测试执行的GeckoDriver进程会占用系统内存。

除非那些悬挂的GeckoDriver进程被删除,否则您的程序将无法启动新的Gecko Driver服务。

要杀死剩余进程,您可以使用以下代码块:

  • 使用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();
    }
    

理想解决方案

理想情况下,为了摆脱这种冗余过程,总是调用CCD_ 4方法中的CCD_;优雅地销毁WebDriverWeb客户端实例。


参考文献

您可以在中找到一些相关的详细讨论

  • Selenium:如何在不调用driver.quit((的情况下阻止geckodriver进程影响PC内存
  • 硒引发的ChromeDriver在后台运行
  • 如何使用Python退出所有通过GeckoDriver和Selenium启动的Firefox进程

相关内容

最新更新