2016-08-08 18 views
0

我正在使用量角器+茉莉花測試角度應用程序的自動化,並且我們使用ng文件上傳器來上傳我們應用程序中的文件。自動化腳本成功上傳在Chrome瀏覽器中的文件,但在Firefox瀏覽器不工作,我收到以下錯誤:無法使用量角器在Firefox瀏覽器中上傳文件(ng文件上傳)?

消息: 失敗:元素當前不可見,所以可能不會

堆棧進行交互: 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瀏覽器中上傳文件。

請參閱代碼:

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文件

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

還要注意的是document.querySelectorAll(「體>標籤')[0] .setAttribute('style','position:absolute');將刪除隱藏標籤標籤中的所有屬性,使我的輸入標籤(標籤標籤的子標籤)可見並將位置設置爲絕對。

所以後來的Firefox將不會拋出錯誤:元素當前不可見,所以可能不會

相關問題