我们正在升级到.NET Core,我们有一个使用Selenium进行某些任务的爬网引擎。我们使用chromedriver.exe
,它在.NET 4.6.1中运行良好。
对于.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
文件夹。但在这两种情况下都无法找到。
我在这里想念什么?
答案 0 :(得分:14)
我无法解释为什么它会以这种方式运作,但这就是我开始工作的方式。
IWebDriver driver = new ChromeDriver(".");
我最初将驱动程序复制到与Program.cs
相同的目录中,并将路径传递给驱动程序,如下所示:
IWebDriver driver = new ChromeDriver("chromedriver.exe");
这导致了这条消息:
文件chromedriver.exe \ chromedriver.exe不存在。
所以只是为了踢,我尝试传递"."
的路径并且它有效。
这可能是一个更好的解决方案。驱动程序需要与应用程序代码位于同一目录中。不在/bin
目录中,这将起作用。
IWebDriver driver = new ChromeDriver(Directory.GetCurrentDirectory());
答案 1 :(得分:0)
我也面临着同样的问题,并且已经通过这种方式解决了。
首先找到您的Chrome版本。
帮助->关于Google Chrome。在那里,您会找到您的版本号。
然后复制下面提供的URL,并将您当前的Chrome版本号放入那些反逗号,然后按Enter。它将直接将您重定向到最新下载。
https://chromedriver.storage.googleapis.com/index.html?path=“” //(完整URL) 下载Zip,解压缩并实施。