我正在运行一个测试 PoC web api。我正在 Web API 端点内运行 Selenium 测试。在本地一切正常,但是当我在 Docker Image 上运行它时。我收到错误:
System.Exception: at Interop.Sys.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean setUser, UInt32 userId, UInt32 groupId, Int32& lpChildPid, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean shouldThrow)
at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at OpenQA.Selenium.DriverService.Start()
at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
我在本地使用一个简单的 chromedriver 来运行它,但我不确定我的本地代码与我在 docker 中创建图像时的区别。谢谢你的帮助。我已经阅读了很多关于 docker 和 selinum 的文章,但还没有找到任何东西。
失败的代码:
ChromeOptions options = new ChromeOptions();
options.AddArgument("headless");
options.AddArguments("no-sandbox");
ChromeDriverService service = ChromeDriverService.CreateDefaultService(System.AppContext.BaseDirectory, "chromedriver");
_driver = new ChromeDriver(service, options, TimeSpan.FromSeconds(30));
我一直在使用的引用资料:
最佳答案
我找到了答案。我最终使用了来自 docker 图像的 RemoteWebDriver
HERE .按照说明操作后,现在一切正常。
关于c# - docker : c# how to run selenium via webapi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54876495/