Javascript 如何将文件自动拖放到无头浏览器中';窗户在哪里?

Javascript 如何将文件自动拖放到无头浏览器中';窗户在哪里?,javascript,file-upload,headless-browser,Javascript,File Upload,Headless Browser,我正在构建一个web应用程序,其中包括将文件从用户系统拖放到浏览器窗口中 我想使用一种可用的无头浏览器(用于测试驱动开发)来自动化用户与UI的交互,以便虚拟DOM获得文件删除事件 我花了两个小时寻找现成的解决方案,但没有成功。 唯一可以自动化的是使用输入[type=file]上传单个文件。 那不是我想要的 是否有适用于Mac OS X或Linux的现成解决方案?我不知道有什么好的解决方案,但我有一些变通方法: 您可以在Linux上的VM、Xnest或VNC服务器中运行浏览器。这会给你一个用户界面

我正在构建一个web应用程序,其中包括将文件从用户系统拖放到浏览器窗口中

我想使用一种可用的无头浏览器(用于测试驱动开发)来自动化用户与UI的交互,以便虚拟DOM获得文件删除事件

我花了两个小时寻找现成的解决方案,但没有成功。 唯一可以自动化的是使用输入[type=file]上传单个文件。 那不是我想要的


是否有适用于Mac OS X或Linux的现成解决方案?

我不知道有什么好的解决方案,但我有一些变通方法:

您可以在Linux上的VM、Xnest或VNC服务器中运行浏览器。这会给你一个用户界面。像VNC这样的协议还允许您模拟鼠标,因此您可以打开文件浏览器并真正地将文件拖到上面

赞成者:做真实的事情。
缺点:易碎。有很多工作要做

你到底在测试什么?浏览器中的文件上载组件?还是在服务器上处理文件

如果您正在使用现有/盒装组件进行多文件上载,那么为什么要测试它?为你写这封信的人不是在测试吗?为什么要重复这一努力

如果您只关心服务器是否正确处理文件,请使用HTTP客户端库手动上载。如有必要,使用HTTP代理查看真实客户端和服务器之间发生的情况

如果你想测试你的应用程序和小部件的交互,事情会变得棘手。要测试这一点,您需要在浏览器中启用日志记录/调试,以查看在拖放过程中触发了哪些事件。JavaScript允许您创建任何事件。对于phantomjs,请尝试
--webdriver loglevel=DEBUG

当您知道“drop”事件的外观时,将其发送到小部件

[编辑]如果您编写自己的文件上载小部件,那么我建议将“删除”事件记录到控制台。对于许多现代浏览器,您将在控制台中获得一个可供检查的活动元素。使用此选项可以找出使用了哪些对象以及每个插槽中的值


这将为您提供足够的信息,以便从测试用例创建这样的事件。我建议在测试期间使用jQuery,因为它有一个很好的框架,可以从头开始构建事件。

我实际上是指文档。我来编辑这个问题。嗯。。。事实上,我不知道如何用另一种方式来表达。我需要DOM来获取drop事件。获取它的最重要元素是“文档”。我添加了“…因此虚拟DOM获取文件删除事件”。我希望它能澄清这一点。我正在测试一个自定义文件上传程序。除一个问题外,您的所有问题都在我的原始帖子中得到了回答。:)我可以建立一个解决方案,但不喜欢它可能的脆弱性。另外,我不使用jQuery。创建一个使用jQuery的小测试用例,它只测试文件上传程序。这样,你就可以运行测试,而不必启动巨大的真实应用程序。我无法从你上次的评论中获得任何有用的信息。请详细说明。还有,为什么你认为我的应用程序很大还有,你为什么回答我从未问过的问题?我有一个相当具体的要求。有一个浏览器(最好是无头的),里面有一个文件列表的drop事件,我想以某种方式模拟它。我试图保持答案的通用性,使它们对不止一个人有用。我不知道有哪款浏览器可以模拟一个文件丢失事件,并在没有其他答案的情况下寻找答案,其他人也一样。