我试图使用C#中的Azure函数在Docker上运行Selenium。我已经安装了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的情况下运行相同的代码时,一切都正常。
发布于 2022-09-30 07:31:52
将chromedriver.exe的绝对路径添加到容器路径环境变量
发布于 2022-10-01 13:42:32
通常,Windows可执行文件以.exe结尾,而Linux可执行文件没有文件扩展名。在Linux上可执行的文件是文件权限的结果,而不是某种命名约定的结果。
异常消息中的文件路径使用正斜杠/作为文件路径分隔符,而不是反斜杠\,这使我相信您已经下载了一个与Windows兼容的ChromeDriver,您正试图在Linux机器上运行它。
解决方案:在通过Docker部署时下载Linux驱动程序。
https://stackoverflow.com/questions/73905107
复制相似问题