Selenium鼠标操作事件

2018年12月25日 4.2k 次阅读 2 条评论 2 人点赞

写在前面
日常的UI自动化测试活动中,有时候会用到鼠标操作事件。Selenium WebDriver 给我们提供了一个类来处理这类事件:ActionChains。
ActionChains 类提供了鼠标操作的常用方法:

  • perform(): 执行所有 ActionChains 中存储的行为;
  • click(): 左键单击
  • context_click(): 右键双击;
  • double_click(): 双击;
  • drag_and_drop(): 拖动;
  • move_to_element(): 鼠标悬停;
  • click_and_hold (): 左键按下不释放;
  • release (): 释放按住的鼠标按钮 。
  • 注意:以上方法需要调用ActionChains()类,将浏览器驱动driver元素elment作为参数传入。例如双击:

    ActionChains(driver).double_click(elment)

    鼠标事件示例
    接下来,针对百度主页模拟鼠标悬停操作。代码如下所示:

    #coding=utf-8
    #www.testclass.cn
    #Altumn
    
    import time
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.implicitly_wait(10)
    driver.get('https://www.baidu.com')
    
    #首先定位到要悬停的元素;
    element = driver.find_element_by_link_text("设置")
    
    #对定位到的元素执行鼠标悬停操作;
    ActionChains(driver).move_to_element(element).perform()
    
    #等待两秒,为了展示鼠标悬停效果;
    time.sleep(2)
    
    #弹出的Ajax,单击'高级搜索';
    driver.find_element_by_link_text('高级搜索').click()    
    

    小结一下
    Selenium WebDriver关于鼠标的处理事件,处理一般为以下几个处理步骤:

  • 导入提供鼠标操作的 ActionChains 类:
  • from selenium.webdriver import ActionChains

  • 定位到要进行鼠标操作的元素(元素定位方式不限):
  • element = driver.find_element_by_link_text("设置")

  • 调用 ActionChains()类,将浏览器驱动 driver 作为参数传入,并且将要执行的动作传到元素上:
  • action = ActionChains(driver).move_to_element(element)

  • 执行 ActionChains 中存储的行为action,可就是对操作事件的提交动作:
  • action.perform()

    风里云里,我在这里等你!

    文章评论(2)

  • 11

    自动化测试学习交流群:670250199

    2019年3月28日
  • 谢希明

    👏 👏

    2019年1月31日