我使用的工具:Protractor 3.3.0,Jasmine 2.4.1,Selenium Standalone Server
如标题所示 -
我创建了一个导航到某个页面的测试,然后点击了一个上传文件'按钮。然后,这会触发浏览器文件上载窗口(类似于Windows资源管理器)。问题是找出是否有一种方法可以根据Protractor / Jasmine使用JavaScript操作该窗口本身。
我使用Java做了类似的事情,这样做我做了一个:找到所有窗口,切换到堆栈顶部,键盘输入到tab到输入字段,从剪贴板粘贴,然后键盘输入到提交它。
我目前使用上述解决方案的问题是,查找所有窗口只会产生当前浏览器窗口,而不是上传文件窗口。
我知道通过npm有javascript导入javascript,但是我无法立即开始工作,宁可直接从Protractor / Jasmine本身做一些事而不是需要一堆图书馆。如果这是我唯一的选择,那么我会更加努力。
我也知道我可以通过HTML注入文件路径:$('input[type="file"]'.sendKeys(filePath);
,但由于我模拟用户操作,我更喜欢访问上传窗口和执行行动以获得更完整的测试。
非常感谢任何想法/建议。
答案 0 :(得分:-1)
没有AutoIt,有更简单的方法。使用selenium的FileDetector功能。以下是我如何使用它的示例(仅适用于节点5.X)。对我来说,它与硒网格,localruns,Saucelabs完美配合。
var FileDetector = require('selenium-webdriver/remote/index.js').FileDetector;
browser.setFileDetector(new FileDetector());
$('css hidden upload input field').sendKeys(filePath).then(function () {
console.log('Uploading file:', filePath);
});
// File upload could take a lot of time. Try to use as small file as possible.
// Here you should add browser.wait() with your condition that will indicate that upload finished, so you can continue test flow.
也检查这个问题 - Remote File Upload Protractor test