tutorial chrome selenium webdriver

chrome - selenium webdriver tutorial



Selenium webdriver: org.openqa.selenium.ElementNotVisibleException: El elemento no está visible actualmente y, por lo tanto, no se puede interactuar con (3)

Estoy intentando hacer clic en el lapso con el concepto text-clone. Siguiente es el html

<ul class="context-menu-list context-menu-root" style="width: 210px; top: 500px; left: 231px; z-index: 2;"> <li class="context-menu-item"> <li class="context-menu-item"> <li class="context-menu-item disabled"> <li class="context-menu-item"> <li class="context-menu-item icon icon-evn-icon-clone-concept"> <span>Clone concept</span> </li> <li class="context-menu-item"> <li class="context-menu-item icon icon-delete disabled"> </ul>

el código javascript que uso es:

driver.findElement(By.xpath("//span[text()=''Clone concept'']")).click();

Verifiqué que este es el derecho para el elemento a través de firepath.

También me aseguré de que ese elemento sea visible según el enlace ¿Cómo forzar a Selenium WebDriver a hacer clic en el elemento que no está visible actualmente?

Aquí está el css calculado

font-family Verdana,?Arial,?Helvetica,?sans-serif .context-menu-list Verdana,?Arial,?Helvetica,?sans-serif jquery...enu.css (line 15) body Arial,?Helvetica,?sans-serif swa.css (line 3) font-size 11px .context-menu-list 11px jquery...enu.css (line 15) list-style-type none .context-menu-list none jquery...enu.css (line 15)

También probé el siguiente código:

WebElement foo = driver.findElement(By.xpath("//span[text()=''Clone concept'']")); Actions bar = new Actions(driver); bar.click(foo).perform();

Excepción: org.openqa.selenium.ElementNotVisibleException: El elemento no está visible actualmente y, por lo tanto, no se puede interactuar con la duración o el tiempo de espera del comando: 30.04 segundos Información de compilación: versión: ''2.24.1'', revisión: ''17205'', hora: ''2012 -06-19 16:53:24 ''Información del sistema: os.name:'' Windows 7 '', os.arch:'' amd64 '', os.version:'' 6.1 '', java.version:'' 1.7.0 ''Información del controlador: driver.version: RemoteWebDriver

Cualquier ayuda será apreciada.

Otro truco para aquellos que se quedan atrapados aquí:
Por el momento, he podido avanzar dividiendo este enorme caso de prueba en casos de prueba más simples.


Lamentablemente, Webdriver no parece ser muy bueno en el manejo de situaciones como las descritas en sus preguntas. Aunque tienes un par de opciones. Simula un clic usando Javascript:

JavascriptLibrary jsLib = new JavascriptLibrary(); jsLib.callEmbeddedSelenium(selenium,"triggerMouseEventAt", elementToClick,"click", "0,0");

o

((JavascriptExecutor) driver).executeScript("arguments[0].click();", elementToClick);

O puede jugar con el uso de acciones para hacer clic en todos los elementos de la cadena del menú. Desafortunadamente, he encontrado que esto no es confiable.

Tengo un script que detecta si un elemento está en una cadena de menús y si hace clic en ellos en el orden requerido para finalmente hacer clic en el que el usuario quería, si lo desea, puedo publicarlo en algún lado, pero no es bonito o corto.


El problema está en tu xpath. Selenium webdriver está encontrando un elemento duplicado por su xpath en la pantalla que está oculta y tring para realizar operaciones en él. Por favor, cambie el xpath y funcionará. Hice lo mismo en mi código ...


Para la consulta anterior, aquí está el xpath:

//ui[@class=''context-menu-list context-menu-root'']/span[contains(text(),''Clone concept'')]