En lisant ici , il y avait apparemment une classe RenderedWebElement
avec une méthode hover
. Cependant, il a été exclusivement conçu pour Java (J'ai cherché dans la documentation de liaisons Python en vain) et a depuis été déconseillé pour Java).
Un hover
ne peut pas être exécuté à l'aide de action_chains
ni en utilisant un objet WebElement
non plus.
Des idées sur la façon de faire cela pour Python? J'ai été ici mais il utilise RenderedWebElement
et n'aide donc pas trop.
J'utilise: Python 2.7, Windows Vista, Selenium 2, Python Liaisons
EDIT: Il existe une méthode mouse_over
pour un Selenium.selenium.Selenium
objet mais je ne peux pas trouver un moyen de créer une instance sans que le serveur autonome soit déjà en cours d'exécution.
[~ # ~] modifier [~ # ~] Veuillez parcourir les commentaires de la réponse marqués comme réponse juste au cas où vous auriez des idées fausses comme je l'ai fait !
Pour faire un survol, vous devez utiliser le move_to_element
méthode.
Voici un exemple
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()
@AutomatedTester a donné à la communauté une excellente solution!
Voici comment je l'ai utilisé.
J'ai utilisé le signal pour quitter correctement phantomJS car il se bloque parfois dans le processus actuel.
Je préfère utiliser find_element_by_xpath car xpath peut être facilement trouvé dans Chrome.
Voici comment: clic droit -> inspecter -> clic droit -> Copier -> 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()