J'essaie d'automatiser la fonctionnalité de téléchargement de fichiers dans Google Drive.
L'élément utilisé pour passer les paramètres est masqué avec une hauteur de - 0px.
Aucune des actions de l'utilisateur ne rendrait cet élément visible. J'ai donc besoin d'un travail pour cliquer sur l'élément alors qu'il n'est pas visible.
<input type="file" style="height: 0px; visibility: hidden; position: absolute; width: 340px; font-size: inherit;" multiple=""/>
Le xpath pour l'élément ci-dessus est -
//*[@class='goog-menu goog-menu-vertical uploadmenu density-tiny']/input
J'utilise
WebDriver.findElement(By.xpath(<xpath>).sendKeys(<uploadFile>)
Exception -
org.openqa.Selenium.ElementNotVisibleException
J'ai essayé d'utiliser JavascriptExecutor. Mais impossible de trouver la syntaxe exacte.
Essaye ça:
WebElement elem = yourWebDriverInstance.findElement(By.xpath("//*[@class='goog-menu goog-menu-vertical uploadmenu density-tiny']/input"));
String js = "arguments[0].style.height='auto'; arguments[0].style.visibility='visible';";
((JavascriptExecutor) yourWebDriverInstance).executeScript(js, elem);
Le groupe ci-dessus changerait la visibilité de votre contrôle d'entrée de fichier. Vous pouvez ensuite procéder aux étapes habituelles de téléchargement de fichiers comme:
elem.sendKeys("<LOCAL FILE PATH>");
Soyez conscient, en modifiant la visibilité d'un champ de saisie, vous vous mêlez de l'application en cours de test. L'injection de scripts pour modifier le comportement est intrusive et déconseillée dans les tests.
Solution simple:
WebElement tmpElement = driver.finElement(ElementLocator);
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", tmpElement);
Essayez cet exemple de code:
JavascriptExecutor executor= (JavascriptExecutor)driver;
executor.executeScript("document.getElementById('ID').style.display='block';");
Select select = new Select(driver.findElement(By.id("ID")));
select.selectByVisibleText("value");
Thread.sleep(6000);
En utilisant Java exécuteur de script et rendre l'élément visible, puis cliquez sur l'élément via ID. J'espère qu'il vous aidera.).
Vous pouvez essayer ce qui suit:
((JavascriptExecutor)driver).executeScript("$('.goog-menu.uploadmenu > input').click();");
Essaye ça:
WebElement elem = yourWebDriverInstance.findElement(
By.cssSelector(".uploadmenu > input"));
String js =
"arguments[0].style.height='auto'; arguments[0].style.visibility='visible';";
((JavascriptExecutor) yourWebDriverInstance).executeScript(js, elem);
Ici, j'ai remplacé XPath par CSS Selector. Faites-moi savoir si le script ci-dessus fonctionne ou non.