[英]Testing upload a file to filepicker with protractor in AngularJS app
[英]How to upload files in filepicker using protractor?
这是HTML代码:
<input type="file" class="fileUploadInput" name="fileUpload" id="fileUploadInput" accept="application/msword,application/pdf,text/plain,application/rtf,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.oasis.opendocument.formula" multiple="multiple" title="Choose File">
这是我的代码:
browser.wait(function(){
return element(by.id('.filepicker_dialog_container')).isPresent();
}).then(function() {
browser.driver.switchTo().frame('.filepicker_dialog');
}).then(function(){
var fileToUpload = '/home/raghavendra/Desktop/f0657c76d96b9ddab5562b8391297dbbb01488fec4e79a4c13195aea.doc';
var absolutePath = protractor.basePath.resolve(__dirname, fileToUpload);
$("#fileUploadInput").sendKeys(absolutePath);
});
我这样做,现在没有收到任何错误,但它没有上传文件。 弹出窗口现在没有关闭。
这是我的完整代码:
var path = require('path');
var ptor = browser,
driver = browser.driver;
describe('Hirealchemy roles', function() {
it('while clicking filepicker icon', function () {
$('.icon-people').click();
browser.sleep(5000);
browser.driver.findElement(By.xpath('/html/body/div[4]/div/ng-view/div/div/div[2]/' +
'section/div/div/div[1]/form/div[2]/input')).sendKeys(group_name);
browser.sleep(5000);
element.all(by.css('.btn.btn-main')).click();
browser.sleep(5000);
browser.wait(function(){
return element(by.id('filepicker_dialog')).isPresent();
})
.then(function(){
ptor.switchTo().frame('filepicker_dialog');
})
.then(function(){
var fileToUpload = '/home/raghavendra/Desktop/50_resumes/f0657c76d96b9ddab5562b8391297dbbb01488fec4e79a4c13195aea.doc';
var absolutePath = path.resolve(__dirname, fileToUpload);
driver.findElement(By.id('fileUploadInput')).sendKeys(absolutePath);
})
.then(function(){
ptor.switchTo().defaultContent();
})
.then(function(){
browser.wait(function(){
var deferred = protractor.promise.defer();
element(by.id('filepicker_dialog')).isPresent()
.then(function(present){
deferred.fulfill(!present);
});
return deferred.promise;
});
});
});
})
这段代码正在运行。
不要单击“选择文件”按钮。 单击它时,将出现浏览器的“选择文件”对话框。 您将无法控制此对话框,因为它超出了selenium webdriver的范围。
而是使用要上载的文件的绝对路径将密钥发送到输入 :
$("#fileUploadInput").sendKeys("/absolute/path/to/file");
在您的特定情况下,执行:
var EC = protractor.ExpectedConditions;
var picker = element(by.id('.filepicker_dialog_container'));
browser.wait(EC.presenceOf(picker), 5000);
browser.switchTo().frame($('.filepicker_dialog'));
var fileToUpload = '/home/raghavendra/Desktop/f0657c76d96b9ddab5562b8391297dbbb01488fec4e79a4c13195aea.doc';
var absolutePath = protractor.basePath.resolve(__dirname, fileToUpload);
$("#fileUploadInput").sendKeys(absolutePath);
这段代码有效:
var path = require('path');
var ptor = browser,
driver = browser.driver;
describe('Hirealchemy roles', function() {
it('while clicking filepicker icon', function () {
$('.icon-people').click();
browser.sleep(5000);
browser.driver.findElement(By.xpath('/html/body/div[4]/div/ng-view/div/div/div[2]/' +
'section/div/div/div[1]/form/div[2]/input')).sendKeys(group_name);
browser.sleep(5000);
element.all(by.css('.btn.btn-main')).click();
browser.sleep(5000);
browser.wait(function(){
return element(by.id('filepicker_dialog')).isPresent();
})
.then(function(){
ptor.switchTo().frame('filepicker_dialog');
})
.then(function(){
var fileToUpload = '/home/raghavendra/Desktop/50_resumes/f0657c76d96b9ddab5562b8391297dbbb01488fec4e79a4c13195aea.doc';
var absolutePath = path.resolve(__dirname, fileToUpload);
driver.findElement(By.id('fileUploadInput')).sendKeys(absolutePath);
})
.then(function(){
ptor.switchTo().defaultContent();
})
.then(function(){
browser.wait(function(){
var deferred = protractor.promise.defer();
element(by.id('filepicker_dialog')).isPresent()
.then(function(present){
deferred.fulfill(!present);
});
return deferred.promise;
});
});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.