ventana scraping pestaña con cambiar python selenium selenium-webdriver python-bindings

python - pestaña - selenium scraping



¿Hay alguna forma de realizar un mouseover(desplazarse sobre un elemento) utilizando enlaces de Selenium y Python? (3)

@AutomatedTester le ha dado a la comunidad una gran solución.

A continuación es cómo lo usé.

Utilicé la señal para salir de phantomJS correctamente ya que a veces se cuelga en el proceso actual.

Prefiero usar find_element_by_xpath ya que xpath se puede encontrar fácilmente en chrome.

Así es como: haga clic derecho -> inspeccionar -> haga clic derecho -> Copiar -> CopyXpath

from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import signal browser = webdriver.PhantomJS() browser.implicitly_wait(3) def hover(browser, xpath): element_to_hover_over = browser.find_element_by_xpath(xpath) hover = ActionChains(browser).move_to_element(element_to_hover_over) hover.perform() browser.service.process.send_signal(signal.SIGTERM) # kill the specific phantomjs child proc browser.quit()

Al leer here , al parecer, solía haber una clase RenderedWebElement con un método hover. Sin embargo, era exclusivamente para Java (se buscó la documentación de enlaces de python here en vano) y desde entonces ha quedado obsoleta para Java.

No se puede realizar un vuelo estacionario usando action_chains ( lista de métodos ) ni usando un objeto webelement ( lista de métodos ) tampoco.

¿Alguna idea de cómo hacer esto para Python? He estado here pero usa RenderedWebElement y, por lo tanto, no ayuda demasiado.

Python 2.7, Windows Vista, Selenium 2, enlaces de Python

EDITAR: Hay un método "mouse_over" para un objeto selenium.selenium.selenium, pero no puedo encontrar una manera de crear una instancia sin tener el servidor independiente ejecutándose.

La pregunta ha sido respondida: por favor revisa los comentarios de la respuesta marcada como respuesta por si acaso tienes ideas erróneas como las que hice.


Hice una sub-class de ActionChains para simplificar el código.

class Hover(ActionChains): def hover(browser, element): return ActionChains(browser).move_to_element(element).perform()

Entonces se puede usar así:

self.browser = driver contact_link = self.browser.find_element_by_link_text( ''Contact'') Hover.hover(self.browser, contact_link)


Para move_to_element , move_to_element usar el método move_to_element .

Aquí hay un ejemplo

from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains firefox = webdriver.Firefox() firefox.get(''http://foo.bar'') element_to_hover_over = firefox.find_element_by_id("baz") hover = ActionChains(firefox).move_to_element(element_to_hover_over) hover.perform()