我正在尝试使用C#中的Azure函数在Docker上运行Selify。我已经安装了Selenium.WebDriver和Selenium.WebDriver.ChromeDriver Nuget包。在docker文件中,我也放置了安装Chrome驱动程序的代码,但当我试图在代码中创建ChromeDriver时,我得到了异常,找不到ChromeDriver。
当我列出目录中的所有文件时,可以看到列出了chromedriver.exe文件:
但当我尝试使用下面这行代码创建一个新的Chrome驱动程序时:
IWebDriver driver = new ChromeDriver(Environment.CurrentDirectory);
我得到了以下例外:
文件/home/site/wwwroot/bin/Debug/netcoreapp3.1/chromedriver不存在。该驱动程序可从http://chromedriver.storage.googleapis.com/index.html下载。
为什么无法识别chromedriver.exe文件?当我在没有Docker的情况下运行相同的代码时,一切都运行得很好。
2条答案
按热度按时间0aydgbwb1#
将chromedriver.exe的绝对路径添加到容器路径环境变量中
tnkciper2#
通常,Windows可执行文件以
.exe
结尾,而Linux可执行文件没有文件扩展名。在Linux上可以执行的文件是文件权限的结果,而不是某种命名约定。异常消息中的文件路径使用正斜杠
/
作为文件路径分隔符,而不是反斜杠\
,这让我相信您下载了与Windows兼容的ChromeDriver,您正尝试在Linux计算机上运行该驱动程序。解决方案:通过Docker部署时,改为下载Linux驱动。