我在Azure上托管了一些Selenium C#测试,他们需要在存储在bin文件夹中的项目树中查找预先构建的excel文件,以执行一些文件上传验证场景。
当它们在本地执行时,这些场景会顺利通过,但当它在Azure上执行时,它们会收到以下错误。
invalid argument: File not found : D:ar1a_Selenium_TestsTestApplicationbinDebugnetcoreapp3.1FilesSC003_CT014_ActiveEmployees.xlsx
文件确实存在于以下路径中:。。。\bin\Debug\netcoreapp3.1\文件…
我对他们使用的代码是:
string root = Directory.GetCurrentDirectory() + "\Files\" + file;
你知道是否有丢失的文件配置或以另一种方式构建filePath吗?
感谢您的帮助:D
Directory.GetCurrentDirection()
返回当前工作目录,而不是DLL文件所在的文件夹。当前的工作目录是另一回事。在您的情况下,当前的工作目录可能类似于D:ar1
。相反,您需要获得测试程序集所在的文件夹:
var binDirectory = Path.GetDirectoryName(GetType().Assembly.Location);
// ^^^^^^^^^
var excelFilePath = Path.Combine(binDirectory, "Files", "SC003_CT014_ActiveEmployees.xlsx");
注意:如果从静态方法执行代码,或者希望指定指向与当前执行的程序集不同的程序集的路径,请将GetType()
替换为typeof(ClassName)
。