zoukankan      html  css  js  c++  java
  • (十五)WebDriver API之鼠标事件

    随笔记录方便自己和同路人查阅。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

      学习selenium自动化之前,最好先学习HTML、CSS、JavaScript等知识,有助于理解定位及操作元素的原理。关于python和selenium安装请自行搜索别的资料,

    这里就不多做介绍了,所有例子均使用python3.6+selenium执行的。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

      通过以前文章的例子可以了解到,可以使用click()来模拟鼠标的单击操作,现在的web产品中提供了更丰富的鼠标交互方式,例如鼠标右击、双击、悬停、甚至是鼠标拖动等功能。在WebDriver中,将这些关于鼠标操作的方法封装在ActionChasins类提供。

      ActionChasins类提供了鼠标操作的常用方法:

      perform() 执行所有ActionChasins中存储的行为。

      context_click() 右击。

      double_click() 双击。

      drag_and_drop() 拖动。

      move_to_element() 鼠标悬停。

      1.鼠标右击操作

      对于ActionChasins类所提供的的鼠标方法与前面文章讲过的click()方法的用法有所不同,要使用ActionChasins需要导入。

    from selenium import webdriver
    #导入供鼠标操作模块
    from selenium.webdriver.common.action_chains import ActionChains
    
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    
    #定位元素
    right_click = driver.find_element_by_id('kw')
    
    #调用ActionChains类,将浏览器webdrver作为参数传入,context_click用于模拟鼠标点击操作,在调用时需要传入元素进行定位
    ActionChains(driver).context_click(right_click).perform()

      #导入提供鼠标操作的ActionChains类

      from selenium.webdriver.common.action_chains import ActionChains

      #调用ActionChains类,将浏览器驱动driver作为参数传入

      ActionChains(driver)

      #context_click()方法用于模拟鼠标右键操作,在调用时需要制定元素定位。

      context_click(right_click)

      #执行所有ActionChains中存储的行为,可以理解成是对整个操作的提交动作。

      Perform()

      2.鼠标悬停

      鼠标悬停弹出下拉菜单也是一个十分常见的功能设计,如下图:  

      

      move_to_element()方法可以模拟鼠标悬停的动作,代码如下:

    from selenium import webdriver
    #导入供鼠标操作模块
    from selenium.webdriver.common.action_chains import ActionChains
    
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    
    #定位元素
    above = driver.find_element_by_css_selector('a.pf:nth-child(8)')
    
    #调用ActionChains类,将浏览器webdrver作为参数传入
    ActionChains(driver).move_to_element(above).perform()
    print(above)

      结果展示:

      自动悬停到定位的元素位置。

      3.鼠标双击操作

      double_click方法用于模拟鼠标双击操作。

    from selenium import webdriver
    #导入供鼠标操作模块
    from selenium.webdriver.common.action_chains import ActionChains
    
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    
    above = driver.find_element_by_link_text('新闻')
    #调用ActionChains类,将浏览器webdrver作为参数传入
    ActionChains(driver).double_click(above).perform()
    print(above)

      4.鼠标拖放操作

      drag_and_drop(source,target)在源元素上按住鼠标左键,然后移动到目标元素上释放。

      source 鼠标拖动的源元素。

      target 鼠标释放的目标元素。

    from selenium import webdriver
    #导入供鼠标操作模块
    from selenium.webdriver.common.action_chains import ActionChains
    
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    
    #定位source源元素位置
    element = driver.find_element_by_id('su')
    
    #定位目标元素位置
    target = driver.find_element_by_link_text('新闻')
    
    #执行元素的拖放操作
    ActionChains(driver).drag_and_drop(element,target).perform()
  • 相关阅读:
    连分数法解佩尔方程特解
    hdu2281&&POJ1320——Pell方程
    Gym
    代入法求递推式
    nodemcu固件的烧录及lua开发
    ESP8266MOD、刷可以使用AT指令的固件、作为客户端向贝壳云端发送固定数据
    Quick Start NodeMCU / ESP8266 12E
    CF388C&&2018EC Final D题——博弈&&水题
    使用cookie登录网盘账号
    Spring的Bean之Bean的基本概念
  • 原文地址:https://www.cnblogs.com/lirongyang/p/11457764.html
Copyright © 2011-2022 走看看