1

分度器に画像ファイルをアップロードします。問題は私がアップロードボタンをクリックせずに"input[type = "file"]"要素を得ることができないということです。分度器のアップロードボタンをクリックした後、ファイルのアップロードダイアログを閉じるには

アップロードボタンをクリックすると、ファイルアップロードダイアログが開きます。

私は

browser.actions().sendKeys(protractor.Key.ESCAPE).perform();

を試してみましたが、それは動作しません。

var image = '../images/image1.png'; 
var absPathImg = path.resolve(__dirname, image); 
element(by.id('uploadImage')).click(); 
browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); 
element(by.css('input[type=file]')).sendKeys(absPathImg); 
element(by.id('upload')).click(); 

がどのように画像をアップロードするには、そのファイルのアップロードダイアログを閉じることができます。

これは私がやっている何ですか?代わりに、人のパスを入力し、画像をアップロードするENTERキーを押すことをシミュレートするENTERキーを押しをシミュレートしていない理由をESCAPEにクリックの

答えて

0

私のコードでこれをやっていますが、これは問題なく動作します。

var path = require('path') 
this.fileUploadOne = element(by.css('locator_to_element')); 

var fileUpload = 'path_of_file_to_upload' 

    absolutePath = path.resolve(__dirname,fileUpload); 
    console.log(absolutePath); 
    this.fileUploadOne.sendKeys(absolutePath); 
    browser.actions().sendKeys(protractor.Key.ENTER).perform(); 

    //just for debugging purposes. 
    browser.sleep(20000); 
+0

上記のように、要素 "element(by.css( 'locator_to_element'));"ファイルアップロードのOSダイアログを閉じた後に表示することができます。私はいくつかのブラウザアクションを呼び出す前にそれを閉じる必要があります。 –

0

このように試してください。私は分度器のためにこれを使用しましたが、私はそれがセレンのために似ていると思います。 Windowsファイルダイアログが閉じられないという問題もあります。 これは私がそれを解決した方法です:

要素(by.css( 'elementForOpenDialog'))。sendKeys(absPathImg);

ファイルダイアログを開く要素にキーを送信し、要素をファイルダイアログを開くためにクリックしないでください。その要素の絶対パスを送信するだけで、ダイアログを開かずにアップロードされます。 それは私のために働いています。がんばろう!

+0

これは、OSの対話を回避する方法です。しかし私の場合、あなたは写真をアップロードするためにボタンをクリックする必要があります。アップロードボタンをクリックすると、OSダイアログがポップアップします。これは私の場合のプロトタイプです。私はOSのダイアログを閉じる必要があります。これをしなければ、私は要素へのパスを送ることができません。 –

+0

私はポイントを参照してください。私はOSの対話に関して同じ問題を抱えていましたが、対話を避けてその問題を解決しました。 –

関連する問題