Action Chains类常用于模拟鼠标的行为,比如单击,双击,拖拽等行为,使用下面的方法导入Action Chains类

from selenium.webdriver.common.action_chains import ActionChains

下面先来看一个例子:

import time
from selenium import webdriver
from selenium.webdriver import ActionChains browser =webdriver.Firefox()
browser.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
browser.switch_to.frame('iframeResult') # id = 'iframeResult'
source = browser.find_element_by_css_selector('#draggable') # 被拖拽的对象
target = browser.find_element_by_css_selector('#droppable') # 目标对象
actions = ActionChains(browser)
actions.drag_and_drop(source, target)
actions.perform()
time.sleep(3)
browser.close()

以上的例子中,实现了鼠标的拖拽操作,首先需要实例化,然后调用其中的方法,完成相应的操作。

下面是一些常用的模拟鼠标的操作

  • click(on_element=None)

    鼠标单击

  • click_and_hold(on_element=None)

    鼠标单击并且按住不放

  • context_click(on_element=None)

    右击

  • double_click(on_element=None)

    双击

  • drag_and_drop(source, target)

    拖拽

  • drag_and_drop_by_offset(source, xoffset, yoffset)

    将目标拖动到指定的位置

  • key_down(value, element=None)

    按住某个键,使用这个方法可以方便的实现某些快捷键,比如下面按下Ctrl+c键

    ActionsChains(browser).key_down(Keys.CONTROL).send_keys('c').perform()
  • key_up(value, element=None)

    松开某个键,可以配合上面的方法实现按下Ctrl+c并且释放。

    ActionsChains(browser).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
  • move_by_offset(xoffset, yoffset)

    指定鼠标移动到某一个位置,需要给出两个坐标位置

  • move_to_element(to_element)

    将鼠标移动到指定的某个元素的位置

  • move_to_element_with_offset(to_element, xoffset, yoffset)

    移动鼠标到某个元素位置的偏移位置

  • perform()

    将之前的一系列的ActionChains执行

  • release(on_element=None)

    释放按下的鼠标

  • send_keys(*keys_to_send)

    向某个元素位置输入值

  • send_keys_to_element(element, *keys_to_send)

    向指定的元素输入数据

Selenium之Action Chains类的更多相关文章

  1. Struts2 源码分析——Action代理类的工作

    章节简言 上一章笔者讲到关于如何加载配置文件里面的package元素节点信息.相信读者到这里心里面对struts2在启动的时候加载相关的信息有了一定的了解和认识.而本章将讲到关于struts2启动成功 ...

  2. 七、Action动作类

    七.Action动作类(一般用**Action结尾) 1.编写动作类的三种方式 动作类不实现.也不继承任何的接口和类.即动作类是一个非常普通的JavaBean. public class HelloA ...

  3. action动作类的生命周期

    创建:Action动作类每次请求的时候都会创建一个实例对象 销毁:当前action动作类的请求响应完后就消失了 跟javaweb中的HttpServletRequest的生命周期是一样的,struts ...

  4. 源码分析——Action代理类的工作

     Action代理类的新建 通过<Struts2 源码分析——调结者(Dispatcher)之执行action>章节我们知道执行action请求,最后会落到Dispatcher类的serv ...

  5. Struts2 | struts.xml文件中使用method属性和通配符简化action标签和Action处理类的编写

    转自:https://www.jianshu.com/p/310e89ee762d 在Struts2框架中,我们知道基本的Action标签只能实现一个url请求对应一个Action处理类.那么我们如果 ...

  6. selenium 使用action进行鼠标,键盘操作

    <!--test.html--> <html> <head> <title>Set Timeout</title> <script&g ...

  7. Selenium 的基础框架类

    个人写的一个selenium的base类,应该所有使用selenium的同事都会使用到: package com.hx.baserunner; import static java.io.File.s ...

  8. selenium +java 多个类公用driver问题

    问题点:太久没有写selenium代码,居然把driver公用的问题忘记了,即:每写一个测试类,执行过程中都会新建一个窗口,这样应该说是非常不专业的. 大概想了一个方法,虽然看起来也不怎么专业,但感觉 ...

  9. selenium自动化-java-封断言类2

    封装断言类 package streamax.com; import java.util.ArrayList; import java.util.List; import org.testng.Ass ...

随机推荐

  1. sql server数字转字符串出现科学计数法

    在从excel往sql server导入数据,电话.编号等数字呈现float类型,然后向b表中insert后(phone为nvarchar)出现科学计数法,解决方法:需将float等数据类型转为标准的 ...

  2. C++飞机大战

    #include<windows.h> #include"resource.h" #include<stdlib.h> #include<time.h ...

  3. 20155213 2016-2017-2 《Java程序设计》第九周学习总结

    20155213 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC(Java DataBase Connectivity)即java数据库连 ...

  4. java接口对接——调用别人接口推送数据

    实际开发中经常会遇到要和其他平台或系统对接的情况,实际操作就是互相调用别人的接口获取或者推送数据, 当我们调用别人接口推送数据时,需要对方给一个接口地址以及接口的规范文档,规范中要包括接口的明确入参及 ...

  5. nodepad++ 标签栏无法拖放标签

    nodepad++ 标签栏无法拖放标签设置--首选项--常用--标签栏--锁定(不允许拖放) 去掉这个勾 ps:最近版本的不知道为什么这个设置不生效了,没找到原因,可能是bug,只能等待升级解决了(升 ...

  6. 利用arcgis处理遥感栅格数据,得到省平均值数据

    1.准备全国省级行政区数据,需要有省级行政区信息,如下所示: 2.生成渔网数据,操作完成会生成一个面数据和一个点数据,我们主要用点数据进行后面的操作. 3.提取栅格数据的值到渔网点数据中. 4.将区域 ...

  7. String和StringBuffer和StringBuilder

    String类 Java语言中用String类代表不可变的字符串,它是由任意多个字符组成的序列.程序中需要存储大量的信息时,一般都用String对象. 1.字符串初始化 JavaSE API为字符串对 ...

  8. 深入JAVA注解之方法注解

    以获取数据库连接为例,建立maven项目 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" ...

  9. 04:sqlalchemy操作数据库

    目录: 1.1 ORM介绍(作用:不用原生SQL语句对数据库操作) 1.2 安装sqlalchemy并创建表 1.3 使用sqlalchemy对表基本操作 1.4 一对多外键关联 1.5 sqlalc ...

  10. Python3基础 sys.path.append 增加模块的搜索路径

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...