在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();
切換到主框架。
控制檯只有一個錯誤,而不是真正有用的:
我幾乎知道會發生什麼,但我不知道還有什麼做的,任何建議/想法?
在此先感謝。