selenium webdriver hidden-field

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);