2016-08-08 5 views
0

Я работаю над автоматизацией тестирования углового приложения с помощью транспортира + жасмина, и мы использовали загрузчик ng-файлов для загрузки файлов в наше приложение. Сценарий автоматизации успешно загружает файл в браузере Chrome, но не работает в Firefox браузер, и я получаю следующее сообщение об ошибке:Не удается загрузить файл (загрузка ng-файла) в браузере Firefox с помощью транспортира?

Сообщение: Ошибка: Элемент не видимых в данный момент, и поэтому не может быть взаимодействовали с

Stack: 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

Woohoo .. !! Наконец, я исправил проблему и смог загрузить файл в браузере 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 ('тело> label ') [0] .setAttribute (' style ',' position: absolute '); удалит весь атрибут в моем скрытом теге ярлыка, в результате чего мой тег ввода (дочерний ярлык метки) будет видимым и установите абсолютное положение.

Итак светлячок не выбросит ошибку: Элемент в настоящее время не видно и поэтому не может быть взаимодействовали с