¿Desplácese hasta el elemento utilizando webdriver?

Todavía estoy aprendiendo y en respuesta a una de mis preguntas: aquí se me dijo que podría deberse a que el elemento en cuestión no está a la vista.

Revisé la documentación y SO, aquí estaba la respuesta más relevante: aquí

Puede usar la clase “org.openqa.selenium.interactions.Actions” para moverse a un elemento:

WebElement element = driver.findElement(By.id("my-id")); Actions actions = new Actions(driver); actions.moveToElement(element); ## actions.click(); actions.perform(); 

Cuando trato de usar lo anterior para desplazarme al elemento: Dice WebElement no definido.

Creo que esto es porque no he importado el módulo relevante. ¿Alguien puede señalar lo que se supone que debo importar?

Edición: Como lo señaló alecxe, este era el código Java.

Pero mientras tanto, justo después de intentar resolverlo durante algún tiempo. He descubierto el método de importación para WebElement:

 from selenium.webdriver.remote.webelement import WebElement 

Podría ayudar a alguien como yo.

El cómo de esto también es una buena lección, OMI:

Fui a: Documentación La

 class selenium.webdriver.remote.webelement.WebElement(parent, id_, w3c=False) 

Necesita ser separado en el formulario de comando mencionado anteriormente.

Estás intentando ejecutar código Java con Python. En Python / Selenium, las org.openqa.selenium.interactions.Actions se reflejan en la clase ActionChains :

 from selenium.webdriver.common.action_chains import ActionChains element = driver.find_element_by_id("my-id") actions = ActionChains(driver) actions.move_to_element(element).perform() 

O también puede “desplazarse a la vista” a través de scrollIntoView() :

 driver.execute_script("arguments[0].scrollIntoView();", element) 

Si te interesan las diferencias:

  • scrollIntoView vs moveToElement

No es una respuesta directa a la pregunta (no se trata de Actions ), pero también te permite desplazarte fácilmente al elemento requerido:

 element = driver.find_element_by_id('some_id') element.location_once_scrolled_into_view 

Esto realmente intenta devolverle las coordenadas ( x , y ) del elemento en la página, pero también se desplaza hacia la derecha hasta el elemento objective

Hay otra opción para desplazar la página al elemento requerido si el elemento tiene el atributo "id"

Si desea navegar a la página y desplazarse hacia abajo al elemento con @id , puede hacerlo automáticamente agregando #element_id a la URL …

Ejemplo

Supongamos que necesitamos navegar a la documentación de Selenium Waits y desplazarnos hacia la sección “Espera implícita”. Podemos hacer

 driver.get('https://selenium-python.readthedocs.io/waits.html') 

y añada código para desplazarse … O use

 driver.get('https://selenium-python.readthedocs.io/waits.html#implicit-waits') 

para navegar a la página Y desplazar la página automáticamente al elemento con id="implicit-waits" (

...

)