我们正在升级到.NET Core,并且我们有一个使用Selenium进行某些任务的爬网引擎。我们使用chromedriver.exe它,并且在.NET 4.6.1中可以正常工作。
chromedriver.exe
对于.NET Core,我们创建了一个控制台应用程序,并添加了以下软件包:
<ItemGroup> <PackageReference Include="Selenium.WebDriver" Version="3.8.0" /> <PackageReference Include="Selenium.Support" Version="3.7.0" /> <PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="2.34.0" /> </ItemGroup>
但是,当我运行代码时,出现以下错误:
chromedriver.exe文件在当前目录或PATH环境变量上的目录中不存在。可以从http://chromedriver.storage.googleapis.com/index.html下载该驱动程序。
我可以看到构建后将其chromedriver.exe复制到bin\Debug\netcoreapp2.0文件夹。我还手动将其复制到bin\Debug文件夹。但是在两种情况下都找不到。
bin\Debug\netcoreapp2.0
bin\Debug
我在这里想念什么?
我无法解释为什么它会这样工作,但这就是我如何使其工作。
IWebDriver driver = new ChromeDriver(".");
最初,我将驱动程序复制到与我相同的目录中,Program.cs并将其传递到驱动程序的路径中,如下所示:
Program.cs
IWebDriver driver = new ChromeDriver("chromedriver.exe");
这导致了此消息:
文件chromedriver.exe \ chromedriver.exe不存在。
因此,我只是为了踢球而尝试通过"."这条路,并且它起作用了。
"."
这可能是一个更好的解决方案。驱动程序必须与您的应用程序代码位于同一目录中。不在/bin目录中,它将起作用。
/bin
IWebDriver driver = new ChromeDriver(Directory.GetCurrentDirectory());