2016-02-18 27 views
6

enter image description here分度器を使ってfilepickerにファイルをアップロードするには?ここで

は、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; 

       }); 
      }); 
    }); 
}) 

は、ここに私の完全なコードです。

答えて

0

このコードを働いています:

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; 

       }); 
      }); 
    }); 
}); 
5

[ファイルを選択]ボタンをクリックしないでください。クリックすると、ブラウザのSelect Fileダイアログが表示されます。 このダイアログは、セレンの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); 
+0

NoSuchElementError:ロケータを使用している要素が見つかりません:By.cssSelector( "#fileUploadInput") –

+0

@raghavendrat私が理解していることから、これは通常2つの理由によるものです - ボタンがiframeの内側にあり、要素を検索する前に切り替えてください。要素が存在するのを待つ必要があります。http://stackoverflow.com/a/27867319/771848希望が役立ちます。 – alecxe

+0

私のコードを掲載しました。一見して、どこに間違っているのか教えてください。 –

関連する問題