【问题标题】:How to mouseover in python Webdriver如何在 python Webdriver 中鼠标悬停
【发布时间】:2012-06-19 00:06:23
【问题描述】:

似乎这是在 webdriver 中进行悬停/鼠标悬停的方法,至少在 java api 中:

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

这在 Python api 中可行吗? python 的 webdriver api 文档似乎没有提到类似的东西。 http://selenium.googlecode.com/svn/trunk/docs/api/py/index.html

在python webdriver中hover/mouseover是如何完成的?

【问题讨论】:

    标签: python selenium webdriver selenium-webdriver


    【解决方案1】:
    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()
    

    【讨论】:

    • 鼠标打开后如何关闭弹出框?这对我来说可以打开鼠标悬停弹出框。但随后它保持打开状态,永远不会关闭。我试图在页面上找到另一个元素并使用 move_to_element 移动到另一个元素。不过运气不好!
    • @nids,点击鼠标悬停元素之外的元素?
    【解决方案2】:

    我认为您要求我们需要单击下拉列表菜单项的场景。我们可以使用 Selenium 在 python 中自动化它。

    为了手动执行此操作,首先我们需要通过将鼠标悬停在父菜单上来调出下拉列表菜单。然后从显示的下拉菜单中单击所需的子菜单。

    使用 Selenium WebDriver 中的 ActionChains 类,我们可以像手动一样执行此步骤。方法介绍如下——

    第一步:导入 webdriver 模块和 ActionChains 类

    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    

    第 2 步:打开 Firefox 浏览器并加载 URL。

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

    第 3 步:通过传递驱动程序对象创建 ActionChains 对象

    action = ActionChains(driver);
    

    第 4 步:在页面中找到第一级菜单对象,并使用方法“move_to_element()”将光标移动到该对象上。 方法 perform() 用于执行我们在动作对象上构建的动作。对所有对象执行相同操作。

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

    第 5 步:使用方法 click() 点击所需的菜单项

    secondLevelMenu.click()
    

    最后的代码块是这样的:

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

    您可以根据您的工作将driver.find_element_by_id() 替换为 selenium 中可用的任何其他 find_elemnt 方法。希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 2018-09-03
      相关资源
      最近更新 更多