如果TeamCity运行的Selenium Webdriver测试单击Browse按钮上传文件,则会出现错误

本文关键字:文件 错误 按钮 运行 TeamCity Selenium Webdriver Browse 单击 测试 如果 | 更新日期: 2023-09-27 18:13:33

我在本地服务器(Windows server 2008)上运行TeamCity的Selenium Webdriver测试。当我尝试上传或下载文件时,我还使用测试自动化框架来处理浏览器的对话框。当我使用NUnit在本地计算机上运行测试时,一切正常。出现问题的测试:

  1. 点击浏览按钮
  2. 在浏览器的对话框中输入要上传的文件的路径
  3. 点击打开按钮

当我用TeamCity运行这个测试时,点击Browse按钮后出现错误:"C:'WINDOWS'system32'config'systemprofile'Desktop指向一个不可用的位置。它可能在这台电脑的硬盘上,也可能在网络上。检查以确保磁盘已正确插入,或者您已连接到Internet或您的网络,然后再试一次。如果仍然无法定位,则信息可能已被移动到其他位置"。据我所知,浏览器试图打开上传文件所在的默认文件夹。如果我从我的机器上通过NUnit运行测试,这个文件夹位于我的文档中。当测试由Teamcity运行时,浏览器进程的所有者是SYSTEM。因此,浏览器无法找到正确的位置时,上传的文件应该定位。我尝试使用regedit更改SYSTEM的默认文件夹,但错误仍然出现。同学们,请帮我解决这个问题。

如果TeamCity运行的Selenium Webdriver测试单击Browse按钮上传文件,则会出现错误

我强烈建议不要使用这种组合方法。如果你想测试文件传输的东西,你不应该尝试通过浏览器的文件选择器,因为他们打破了webdriver的宇宙。相反,我建议将默认下载路径设置为webdriver配置中的属性。像这样的代码应该做:

profile.SetPreference(“browser.download.folderList”, 1);
profile.SetPreference(“browser.download.manager.showWhenStarting”, false);
profile.SetPreference(“browser.helperApps.neverAsk.saveToDisk”, “application/xml”);

一篇关于这个主题的好文章建议你甚至不需要这个,但是用一个更好的解决方案来测试下载的东西,叫做Powder-Monkey。