【问题标题】:Asp.net core: Selenium doesn't see geckodriver in current directoryAsp.net 核心:Selenium 在当前目录中看不到 geckodriver
【发布时间】:2017-10-05 10:52:04
【问题描述】:

web api core 2.0 项目看不到 geckodriver.exe 我该如何解决?!

我创建了一个 asp.net core 2.0 web api 项目。 我将 geckodriver.exe 放到项目目录中,我将“复制到输出目录”更改为“始终复制”。

这是我的控制器:

using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;

namespace WebApplication1.Controllers
{
    [Route("api/[controller]")]
    public class ValuesController : Controller
    {
        // GET api/values
        [HttpGet]
        public IEnumerable<string> Get()
        {
            if (!System.IO.File.Exists("geckodriver.exe"))
            {
               throw new Exception("error"); 
            }

            using (IWebDriver driver = new FirefoxDriver())
            {
                driver.Navigate().GoToUrl("http://gooogle.com");
            }
            return new string[] { "value1", "value2" };
        }
    }
}

当我开始我的项目时,我收到异常消息

OpenQA.Selenium.DriverServiceNotFoundException: 'geckodriver.exe 文件不存在于当前目录或 PATH 环境变量的目录中。驱动可以在https://github.com/mozilla/geckodriver/releases下载。'

我想知道为什么 .net framework mvc 应用程序与相同的代码运行良好!

我的问题是:如何解决我的问题?我在谷歌上找不到解决方案

【问题讨论】:

    标签: c# asp.net selenium automated-tests geckodriver


    【解决方案1】:

    驱动程序被复制到输出目录。只需使用以下代码行: var driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))

    发生这种情况是因为 .NET Core 项目的 NuGet 包是从全局位置而不是 .NET Framework 项目的包文件夹加载的。要修复它,我们需要指定执行文件夹的路径。 (来源:https://www.automatetheplanet.com/webdriver-dotnetcore2/

    【解决方案2】:

    将driver.exe复制到以下路径:

    C:\Users\[userName]\.nuget\packages\selenium.webdriver\3.6.0\lib\netstandard2.0\
    

    【讨论】:

    • 谢谢。有用。不幸的是,这个解决方案不是跨平台的
    猜你喜欢
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 2018-09-18
    • 2018-11-11
    • 2022-01-27
    • 2018-10-16
    • 2022-09-24
    相关资源
    最近更新 更多