Качете файл в скрито поле в WedriverIO с помощта на CucumerJS

Здравейте, трябва да автоматизирам уебсайт с помощта на cucumberJS и webdriverIO. За това трябва да кача файл, но полето е скрито. Например :

<input type="file" id='uploadFile' style="display: none"'>

но webdriver не може да идентифицира елемента в потребителския интерфейс.

Благодаря предварително...


person Priyank    schedule 23.02.2015    source източник
comment
възможен дубликат на Selenium WebDriver - скрит избор и закотвяне   -  person nwinkler    schedule 23.02.2015


Отговори (2)


В webdriverIO v5 файловете се качват на входове на type="file" чрез извикване на .setValue() върху тях с пътя на локалния файл като аргумент. Това обаче не изглежда да работи за скрити входове, защото .setValue() първо извиква .clearValue(), което ще хвърли Element could not be scrolled into view. За да заобиколите това, извикайте .addValue() директно върху елемента:

input.addValue(filePath);

Съответни API документи: https://webdriver.io/docs/api/element/addValue.html

person Trey    schedule 25.04.2019
comment
Прекарах много време с този бъг. Същият проблем, нашата грешка обаче беше, че елементът не може да взаимодейства. Опитах всички решения на browser.execute, които можах да намеря, и нито едно не работи за промяна на дисплея на скрития елемент. Това обаче свърши работа за нас! - person Mike; 17.09.2020

Получих решението за този проблем. С помощта на webdriverIO можем да изпълним javascript, за да променим стила на показване от "none" на "block".

client.execute(function() {
document.getElementById("element_id").style.display="block";
},function(err) {
client.uploadFile(localPath[,callback])    
if(err){
console.log("Error "+err);
}
});

след това качете файла в полето и след това променете дисплея отново на никакъв.

person Priyank    schedule 23.02.2015
comment
Това няма да работи, когато родителският елемент е скрит - person OguzGelal; 18.03.2021