Python Selenium如何在元素上移动鼠标。显示下拉菜单

时间:2017-04-01 21:01:40

标签: python selenium

链接http://www.babylegs.com

我的代码:

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()

2 个答案:

答案 0 :(得分:2)

假设您的浏览器是Firefox,则Python代码如下所示:

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()

如果您已经将光标移到某个元素上并且想要相对重新定位,则可以使用:

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

或更短:

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

更多文档在这里: https://selenium-python.readthedocs.io/api.html

答案 1 :(得分:0)

使用ActionChains,如:

actions.move_to_element(element_to_select).perform()

然后你可以做你需要的。这就是你如何使用下拉菜单,finding元素,然后执行一个链来基本上将鼠标移动到正确的位置。

然后,一旦菜单(和子菜单)曝光,您可以点击它们(如您所见,您无法点击不可见的内容。

在您的情况下,从“袜子”菜单中选择一些内容:

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()