Selenium Webdriver-haga clic en los elementos ocultos
hidden-field (5)
Estoy tratando de automatizar la funcionalidad de carga de archivos en Google Drive.
El elemento usado para pasar parámetros está oculto con altura - 0px.
Ninguna de las acciones del usuario haría este elemento visible. Así que necesito una solución para hacer clic en el elemento mientras no esté visible.
<input type="file" style="height: 0px; visibility: hidden; position: absolute; width: 340px; font-size: inherit;" multiple=""/>
El xpath para el elemento anterior es -
//*[@class=''goog-menu goog-menu-vertical uploadmenu density-tiny'']/input
estoy usando
WebDriver.findElement(By.xpath(<xpath>).sendKeys(<uploadFile>)
Excepción
org.openqa.selenium.ElementNotVisibleException
- El elemento no está visible actualmente y, por lo tanto, no se puede interactuar con él.
He intentado usar JavascriptExecutor. Pero incapaz de encontrar la sintaxis exacta.
Prueba esto:
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);
El grupo anterior cambiaría la visibilidad de su control de entrada de archivos. A continuación, puede continuar con los pasos habituales para cargar archivos como:
elem.sendKeys("<LOCAL FILE PATH>");
Tenga en cuenta que, al cambiar la visibilidad de un campo de entrada, está entrometiéndose con la aplicación bajo prueba. Inyectar scripts para alterar el comportamiento es intrusivo y no se recomienda en las pruebas.
Prueba esto:
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);
Aquí he sustituido XPath por CSS Selector. Déjame saber si el script anterior está funcionando o no.
Pruebe este código de ejemplo:
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);
Al utilizar el ejecutor de scripts java y hacer visible el elemento, haga clic en el elemento a través de ID. Espero que te ayude ..
Puedes probar lo siguiente:
((JavascriptExecutor)driver).executeScript("$(''.goog-menu.uploadmenu > input'').click();");
Solución simple:
WebElement tmpElement = driver.finElement(ElementLocator);
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", tmpElement);