2016-08-08 9 views
0

私は分度器+ジャスミンを使用して角型アプリケーションのテスト自動化に取り組んでいます。私たちはアプリでアップロードファイル用にng-file uploaderを使用しました。自動化スクリプトが正常にChromeブラウザでファイルをアップロードしますが、Firefoxブラウザでは動作しないと、私は次のエラーを取得しています:分裂器でFirefoxのブラウザにファイル(ng-file upload)をアップロードできませんか?

メッセージ: は失敗しました:要素が現在表示されていないので、

スタックと相互作用することはできません。 ElementNotVisibleError:要素は、現在表示されていないので、アップロードしたファイルの

コードスニペットと相互作用することはできません

this.uploadFile = function (uploadFile) { 
    var fileToUpload = uploadFile; 
    var absolutePath = path.resolve(__dirname, fileToUpload); 
    $('input[type="file"]').sendKeys(absolutePath); 
    element(submitBtn).click(); 
}; 

<label style="visibility: hidden; position: absolute; overflow: hidden; width: 0px; height: 0px; border: medium none; margin: 0px; padding: 0px;" tabindex="-1"> 
upload 
<input id="ngf-{{ id }}" type="file" ngf-change="onChange($file)" ngf-keep="{{ keep }}" required="required" ngf-validate="{{ validate }}" ngf-pattern="{{ pattern }}" ngf-accept="{{ allowedMime }}" ngf-multiple="{{ multipleAllowed }}" ngf-model-invalid="invalid" ng-model-options="{ allowInvalid: multipleAllowed }" ng-model="files" ngf-select="" ngf-drop="" name="{{ name }}" accept=".csv,text/plain,application/vnd.ms-excel"/> 

ご協力いただければ幸いです!

+0

と相互作用することはできません現在のビューには表示されません。解決の問題でもあります。あなたがそれと対話している間、要素が実際に見えているかどうかを確認できますか? – TypeScripter

+0

要素が非表示になっています。 – vsathyak

+0

あなたはどちらのFirefoxドライバを使用していますか?これはローカルまたはリモートセッションですか? –

答えて

0

ウーホーです!最後に、問題を修正し、Firefoxのブラウザでファイルをアップロードできるようになりました。

コードを参照してください:

onPrepare: function() { 
    browser.driver.getCapabilities().then(function(caps){ 
     browser.browserName = caps.get('browserName'); 
    }); 
} 

はまたdocument.querySelectorAll( 'body>のことに注意してください・ファイル

this.uploadFile = function (uploadFile) { 
    if(browser.browserName === 'firefox') { 
     browser.executeAsyncScript(function(callback) { 
      document.querySelectorAll('body>label')[0].setAttribute('style', 'position: absolute'); 
      callback(); 
     }); 
    } 
    var fileToUpload = uploadFile; 
    var absolutePath = path.resolve(__dirname, fileToUpload); 
    $('input[type="file"]').sendKeys(absolutePath); 
    element(uploadBtn).click(); 
}; 

をし、ブラウザ名を取得するために、あなたのconf.jsに次のように追加してくださいラベル ')[0] .setAttribute('スタイル '、'位置:絶対 ');隠れたラベルタグ内のすべての属性が削除され、入力タグ(ラベルタグの子)が表示され、絶対位置に位置が設定されます。

それではFirefoxがエラーをスローしません:要素が現在表示されていないので、私の経験エラーは、と対話しようとしているその要素を示唆している「要素が現在表示されていない」あたり

関連する問題