在AngularJS项目中,我试图用量角器测试文件是否正确上传到filepicker。在AngularJS应用程序中使用量角器将文件上传到filepicker
Filepicker input type="file"
元素whithin一个iframe name="filepicker_dialog" id="filepicker_dialog"
所以,首先是需要可以访问的IFRAME:
var
ptor = protractor.getInstance(),
driver = ptor.driver;
//Open iframe
element(by.id('openIframe')).click();
//Wait iframe is present
browser.wait(function(){
return element(by.id('filepicker_dialog')).isPresent();
})
.then(function(){
//Switch protractor to iframe
ptor.switchTo().frame('filepicker_dialog');
})
硒维基说,上传的文件中的一些伎俩已经被完成,因为......
You can't interact with the native OS file browser dialog directly
所以巴sed的上How to upload file in angularjs e2e protractor testing回答我的输入值设定文件路径:
//Upload image
.then(function(){
//Get image's absolute path
var fileToUpload = '../../public/assets/img/header.jpg';
var absolutePath = path.resolve(__dirname, fileToUpload);
//Set image's path as input (file type) value
driver.findElement(By.id('fileUploadInput')).sendKeys(absolutePath);
//Submit form
driver.findElement(By.id('fileUploadForm')).submit();
// Switch back to Default Content
ptor.switchTo().defaultContent();
});
文件似乎是iframe中,但不是我的项目被上传,问题是该iframe未关闭并保持这样的:
我接触filepicker团队和他们的回答是:
所以,当文件被上传所有东西的发生是通过通信iframe或本地存储将结果发送到原始网站。 如果通信iframe和本地存储不可用,则数据发送将失败,并且小部件将保持打开并显示错误消息。
因为他们认为问题可能是量角器是一个iframe中所以不能与主框架沟通,尽管我做ptor.switchTo().defaultContent();
切换到主框架。
控制台只有一个错误,而不是真正有用的:
我几乎知道会发生什么,但我不知道还有什么做的,任何建议/想法?
在此先感谢。