web-dev-qa-db-fra.com

Comment passer de la souris en python Webdriver 

Il semble que ce soit le moyen de survoler/passer la souris dans WebDriver, du moins dans l’API Java:

Actions action = new Actions(driver);
action.moveToElement(element).build().perform();
action.moveByOffset(1, 1).build().perform();

Est-ce possible dans l'API Python? Les api docs webdriver pour python ne semblent rien mentionner de tel. http://Selenium.googlecode.com/svn/trunk/docs/api/py/index.html

Comment se fait le survol/la souris dans python webdriver?

25
Purrell
from Selenium.webdriver.common.action_chains import ActionChains


def hover(self):
    wd = webdriver_connection.connection
    element = wd.find_element_by_link_text(self.locator)
    hov = ActionChains(wd).move_to_element(element)
    hov.perform()
35
user1411110

Je pense que vous demandez des scénarios dans lesquels nous devons cliquer sur l'élément d'un menu déroulant. Nous pouvons l’automatiser en python avec Selenium.

Pour effectuer cette action manuellement, nous devons d'abord afficher le menu de la liste déroulante en maintenant la souris sur le menu parent. Cliquez ensuite sur le menu enfant requis dans le menu déroulant affiché.

En utilisant la classe ActionChains dans Selenium WebDriver, nous pouvons effectuer cette étape de la même manière que nous le faisons manuellement. La méthode est décrite ci-dessous - 

Étape 1: importez le module Webdriver et la classe ActionChains

from Selenium import webdriver
from Selenium.webdriver.common.action_chains import ActionChains

Étape 2: ouvrez le navigateur Firefox et chargez l'URL.

site_url = 'Your URL'
driver = webdriver.Firefox()
driver.get(site_url)

Étape 3: Créez un objet ActionChains en passant un objet de pilote

action = ActionChains(driver);

Étape 4: Recherchez un objet de menu de premier niveau dans la page et déplacez le curseur sur cet objet à l’aide de la méthode 'move_to_element ()' . La méthode perform () est utilisée pour exécuter les actions que nous avons construites sur un objet action. Faites la même chose pour tous les objets.

firstLevelMenu = driver.find_element_by_id("first_level_menu_id_in_your_web_page")
action.move_to_element(firstLevelMenu).perform()
secondLevelMenu = driver.find_element_by_id("second_level_menu_id_in_your_web_page")
action.move_to_element(secondLevelMenu).perform()

Étape 5: Cliquez sur l'élément de menu requis à l'aide de la méthode click ()

secondLevelMenu.click()

Le dernier bloc de code est comme ceci:

from Selenium import webdriver
from Selenium.webdriver.common.action_chains import ActionChains

site_url = 'Your URL'
driver = webdriver.Firefox()
driver.get(site_url)

action = ActionChains(driver);

firstLevelMenu = driver.find_element_by_id("first_level_menu_id_in_your_web_page")
action.move_to_element(firstLevelMenu).perform()
secondLevelMenu = driver.find_element_by_id("second_level_menu_id_in_your_web_page")
action.move_to_element(secondLevelMenu).perform()

secondLevelMenu.click()

Vous pouvez remplacer driver.find_element_by_id() selon votre travail par n’importe quelle autre méthode find_elemnt disponible dans Selenium. J'espère que cela vous sera utile.

0
Tanmoy Datta