Lien http://www.babylegs.com

Mon code:

class TestClassMy(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()


    def test1(self):
        driver = self.driver
        driver.get('http://www.babylegs.com')
        driver.maximize_window()
        element_to_select = driver.find_element_by_xpath(".//*[@id='nav']/ol/li[5]/a") #d.send_keys(Keys.NULL)

        actions = ActionChains(driver)
        element_to_select.click_and_hold(element_to_select).perform()

    def tearDown(self):
        self.driver.close()

if __name__ == '__main__':
    unittest.main()
1
ChantOfSpirit 2 avril 2017 à 00:01

2 réponses

Meilleure réponse

En supposant que votre navigateur est Firefox, le code Python ressemblerait à ceci:

driver = webdriver.Firefox(executable_path=driver_path)
action = webdriver.ActionChains(driver)
element = driver.find_element_by_id('your-id') # or your another selector here
action.move_to_element(element)
action.perform()

Si vous avez déjà déplacé votre curseur sur un élément et que vous souhaitez le repositionner de manière relative, vous pouvez utiliser:

action.move_by_offset(10, 20)    # 10px to the right, 20px to bottom
action.perform()

Ou encore plus court:

action.move_by_offset(10, 20).perform()

Plus de documentation est ici: https://selenium-python.readthedocs.io/api.html

2
Eugene Chabanov 9 mai 2020 à 15:15

Utilisez les ActionChains comme:

actions.move_to_element(element_to_select).perform()

Ensuite, vous pouvez faire ce dont vous avez besoin. C'est ainsi que vous allez travailler avec les menus déroulants, en finding les éléments, puis en effectuant une chaîne pour déplacer essentiellement la souris aux bons endroits.

Ensuite, une fois le menu (et les sous-menus) exposés, vous pouvez cliquer dessus (comme vous le voyez, vous ne pouvez pas cliquer sur des éléments non visibles.

Dans votre cas, pour sélectionner quelque chose dans le menu "Chaussettes":

e1 = driver.find_element_by_xpath('//*[@id="nav"]/ol/li[5]/a')
e2 = e1.find_element_by_xpath('../ul/li[1]/a')
actions.move_to_element(e1).move_to_element(e2).perform()
e2.click()
1
pbuck 1 avril 2017 à 21:49