• Python+selenium鼠标、键盘事件


    鼠标操作

    现在的Web产品提供了丰富的鼠标交互方式,例如鼠标右击、双击、悬停、甚至是鼠标拖动等功能,在Webdriver中,将这些关于鼠标操作的方法封装在ActionChains类提供。

    1.鼠标右击操作

    from selenium import webdriver
    # 引入ActionChains类
    from selenium.webdriver.common.action_chains import ActionChains
    from time import sleep
    
    driver=webdriver.Firefox()
    driver.get("http://www.baidu.com")
    #......
    
    # 定位到要右击的元素
    element=driver.find_element_by_css_selector("#kw")
    
    #右击操作
    ActionChains(driver).context_click(element).perform()
    #......
    • from selenium.webdriver import ActionChains,导入提供鼠标操作的ActionChains类
    • ActionChains(driver),调用ActionChains()类,将浏览器驱动driver作为参数传入
    • context_click(element),context_click()方法用于模拟鼠标右键操作,在调用时需要制定元素定位
    • perform(),执行所有ActionChains中存储的行为,可以理解成是对整个操作的提交动作

    2.鼠标悬停

    #......
    # 定位到要悬停的元素
    element=driver.find_element_by_css_selector("#kw")
    #鼠标悬停
    above=driver.find_element_by_css_selector(".pf")
    ActionChains(driver).move_to_element(above).perform()
    #......

    3.鼠标双击操作

    #......
    # 定位到要双击的元素
    element=driver.find_element_by_css_selector("#kw")
    #双击操作
    ActionChains(driver).double_click(element).perform()
    #......

    4.鼠标拖放操作

    #......
    # 定位元素的原位置
    element=driver.find_element_by_id("xx")
    # 定位元素要移动的目标位置
    target==driver.find_element_by_id("xx")
    # 执行元素的拖放操作
    ActionChains(driver).drag_and_drop(element,target).perform()
    #......

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

    • source:鼠标移动的源元素
    • target:鼠标释放的目标元素

    键盘事件

    Keys()类提供了键盘上几乎所有按键的方法。

    from selenium import webdriver
    # 引入Key模块
    from selenium.webdriver.common.keys import Keys
    from time import sleep
    
    driver=webdriver.Firefox()
    driver.get("http://www.baidu.com/")
    
    # 输入框输入内容
    driver.find_element_by_css_selector("#kw").send_keys("pythonn")
    
    # 删除多输入的一个n
    driver.find_element_by_css_selector("#kw").send_keys(Keys.BACK_SPACE)
    
    # 输入空格键+“教程”
    driver.find_element_by_css_selector("#kw").send_keys(Keys.SPACE)
    driver.find_element_by_css_selector("#kw").send_keys("教程")
    
    # ctrl+a全选输入框内容
    driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'a')
    
    # ctrl+c复制输入框内容
    driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'c')
    
    # ctrl+x剪切输入框内容
    driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'x')
    
    # ctrl+v粘贴内容到输入框
    driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'v')
    
    # 通过回车键代替单击操作
    driver.find_element_by_css_selector("#su").send_keys(Keys.ENTER)
    
    driver.quit()

    在使用键盘方法前需要先导入Keys类

    以下为常用的键盘操作

    代码 含义
    send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
    send_keys(Keys.SPACE) 空格键(Space)
    send_keys(Keys.TAB) 制表键(Tab)
    send_keys(Keys.ESCAPE) 回退键(Esc)
    send_keys(Keys.eNTER) 回车键(Enter)
    send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
    send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)
    send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
    send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+(Ctrl+A))
    send_keys(Keys.F1) 键盘F1
    ......  
    send_keys(Keys.F12) 键盘F12
  • 相关阅读:
    jdk1.8新特性
    linux centos虚拟机安装
    linux基本命令介绍
    JavaScript与Java的区别
    jQuery UI的基本使用方法与技巧
    jQuery Ajax 实例 ($.ajax、$.post、$.get)
    .NET批量大数据插入性能分析及比较
    .NET中的CSV导入导出(实例)
    jquery中push()的用法(数组添加元素)
    .net如何后台批量删除
  • 原文地址:https://www.cnblogs.com/NancyRM/p/8136388.html
Copyright © 2020-2023  润新知