从D:Windows操作系统装载文件,以便将文件上载到Zalenium docker映像

从D:Windows操作系统装载文件,以便将文件上载到Zalenium docker映像,docker,zalenium,Docker,Zalenium,我正在通过Zalenium docker图像运行硒测试。我有一个测试需要将.pdf文档上传到应用程序。 我将用于存储所有.pdf的目录是: D:\Automation\KITS Automation\exports endtoend tests\Defra.exports.endtoend.tests\bin\Debug\netcoreapp2.1 我已将此路径添加到我的docker CMD窗口,如下所示: docker run--rm-ti--name zalenium-p 4444:4444

我正在通过Zalenium docker图像运行硒测试。我有一个测试需要将.pdf文档上传到应用程序。 我将用于存储所有.pdf的目录是: D:\Automation\KITS Automation\exports endtoend tests\Defra.exports.endtoend.tests\bin\Debug\netcoreapp2.1 我已将此路径添加到我的docker CMD窗口,如下所示:

docker run--rm-ti--name zalenium-p 4444:4444-v/var/run/docker.sock:/var/run/docker.sock-v/tmp/videos:/home/seluser/videos-v/d:/automation/kits automation/exports endtoend tests/defra.exports.endtoend.tests/bin/debug/netcoreapp2.1--特权dosel/zalenium启动

一旦添加docker请求与确认弹出框共享此文件,但是当我运行测试时,我仍然看到下面的错误

OpenQA.Selenium.WebDriverException:无效参数:未找到文件:D:\Automation\KITS Automation\exports endtoend tests\Defra.exports.endtoend.tests\bin\Debug\netcoreapp2.1\test-ehc.pdf

执行上载文件的c#代码:

        string folder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        string filePath = Path.Combine(folder, "test-ehc.pdf");
        driver.FindElement(By.Id("file")).SendKeys(filePath)

这与扎勒尼厄姆一点关系都没有。测试代码C#似乎就是这种情况,需要访问要上传的文件。通常这是通过

driver.setFileDetector(new LocalFileDetector());

如果您想在Docker容器中运行C#代码,请查看可用于此操作的Docker图像。最后,要上载的文件不需要与Zalenium共享,它需要与将执行测试代码的容器共享。

这与启动Zalenium时的Zalenium有关。您可以使用以下命令:

docker run --rm -ti --name zalenium -p 4444:4444 -v 
/var/run/docker.sock:/var/run/docker.sock -v /D/source/repos/Defra.Git/ehco-endtoend- 
tests/src/main/resources/upload:/tmp/node/home/seluser/Downloads --privileged 
dosel/zalenium start --desiredContainers 2

如果您需要访问主机Docker套接字、特权容器和来自主机的任意内容,您可能会发现在Docker之外运行流程更容易。谢谢David,您是对的,测试在Docker之外的本地运行非常完美,但自动化平台使用Docker是一项业务要求。我确信这是可能的我只是不太清楚我也尝试过通过docker应用程序中的设置共享完整的D:驱动器:docker/settings/Shared drive在我这样做之后,我看到防火墙正在阻止Windows和容器之间的文件共享。有关更多信息,请参阅文档。我已经检查了我的防火墙DockerSmbMount在公共和私有上都已启用。这里还需要什么吗?