google examples example code chromedriver python python-3.x selenium selenium-webdriver

examples - selenium python example code



¿Desplazarse al elemento usando webdriver? (5)

Además de move_to_element() y scrollIntoView() , quería plantear el siguiente código que intenta centrar el elemento en la vista:

web_element = self.selib.find_element(locator) self.selib.execute_javascript( "ARGUMENTS", web_element, "JAVASCRIPT", ''arguments[0].scrollIntoView({behavior: "instant", block: "start", inline: "start"});'' )

Todavía estoy aprendiendo y en respuesta a una de mis preguntas: here , me dijeron que podría ser debido porque el elemento en cuestión no está a la vista.

Miré a través de la documentación y SO, aquí estaba la respuesta más relevante: here

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 se debe a que no he importado el módulo relevante. ¿Alguien puede señalar lo que se supone que debo importar?

Editar: como señaló alecxe, este era el código java.

Pero mientras tanto, justo después de tratar de resolverlo por 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 es también una buena lección, en mi opinión:

Fui a: Documentation El

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

Debe separarse 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 estás interesado en las diferencias:


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

Digamos que necesitamos navegar a la documentación de Selenium Waits y desplazar la página hacia abajo a la sección "Espera implícita". Podemos hacer

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

y agregue 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" ( <div class="section" id="implicit-waits">...</div> )


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

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

En realidad, esto tiene la intención de devolverle las coordenadas ( x , y ) del elemento en la página, pero también desplazarse hacia abajo a la derecha al elemento de destino


Puede desplazarse al elemento utilizando javascript a través del método execute_javascript . Por ejemplo, así es como lo hago usando SeleniumLibrary en Robot Framework:

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