2011-09-07 19 views
6

Estoy usando Selenium WebDriver (v2.5.0). Me sale este error cuando se utiliza un "comando driver.click(...)Selenio: ¿Cómo puedo hacer que WebDriver ignore el error "El elemento no está visible"?

Element is not currently visible and so may not be interacted with Build info: version: '2.5.0', revision: '13516', time: '2011-08-23 18:30:44' System info: os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.38-10-generic', java.version: '1.6.0_26' Driver info: driver.version: RemoteWebDriver 

En el navegador cuando Pase el ratón sobre un elemento, el elemento que se ha pulsado se hace visible. ¿Hay alguna manera de comprobar si algo es visible o no?

Respuesta

12

usted puede hacerlo a través de acciones. para lograr lo que desea, usando el cliente de Python WebDriver, pero el principio es el mismo.

ActionChains(driver).move_to_element(driver.find_element(By.ID, 'Foo'))\ 
    .click(driver.find_element(By.Name, "Bar"))\ 
    .perform() 
+0

ya he encontrado el elemento. En lugar de .send_keys, ¿qué debo hacer para forzarlo? – User

4

la mejor solución es no utilizar el método click(), pero a implementar Actions y tener selenio (a través de webdriver) simule el mouse moviéndose sobre el elemento para activar los eventos que luego hacen que el elemento se pueda activar/hacer clic. una vez que haya activado el elemento, realice el método click() según sea necesario. Supongo que el elemento está deshabilitado y no se puede hacer clic en primer lugar.

Establezca su elemento, también podría usar RenderedWebElement, que tiene un método hover(), entonces no necesitaría crear el siguiente objeto Actions sin embargo, puede no funcionar dependiendo de cómo la aplicación está diseñada con eventos nativos. Prueba ambos para ver cuál funciona mejor y es más elegante.

WebElement element = driver.findElement(By.id("element_id")); 

Crear un nuevo actions objeto respaldado por el WebDriver

Actions actions = new Actions(driver); 

Mover el cursor al elemento - esto se "active" el elemento que se pueda hacer clic

actions.moveToElement(element).perform(); 

Compruebe el elemento ahora se puede hacer clic o "habilitar"

assertThat(element.isEnabled()); 

Ahora realice la acción de clic

element.click(); 
Cuestiones relacionadas