一、鼠标操作

这个需要使用webdriver下的ActionChains类,这个类是操作鼠标操作的:

from selenium.webdriver import ActionChains

鼠标操作可分为三类:鼠标移动、鼠标拖拽、鼠标点击

element = driver.find_element_by_name('tj_settingicon')
#鼠标点击
ActionChains(driver).click(element).perform() #单击某元素
ActionChains(driver).click_and_hold(element).perform() #在此元素上按下左键不放
ActionChains(driver).context_click(element).perform() #在此元素上单击右键
ActionChains(driver).double_click(element).perform() #在此元素上双击
#鼠标拖拽
ActionChains(driver).drag_and_drop(source,target).perform() #从一个元素的位置,拖至另一个元素位置松开
ActionChains(driver).drag_and_drop_by_offset(source,xoffset,yoffset) #以坐标的形式拖拽,x,y #鼠标移动
ActionChains(driver).move_by_offset(x,y) #移动到(x,y)坐标位置
ActionChains(driver).move_to_element(element) #鼠标移动到某个元素上
ActionChains(driver).move_to_element_with_offset(element,x,y) #移动到某个元素上,然后,在移动到相对坐标(x,y)上

上图所示,会看到,每个方法后都跟了一个perform()很奇怪是不是,这个perform相当于submit提交。

如果你的方法后边不写这个,举个例子,百度一下,你就知道

ActionChains(driver).click(element)  没有preform()

如果后边没有跟这个,你可以看到,鼠标是点击了,但是没有进行搜索,所以perform相当于提交

示例代码:

百度搜索selenium,点击百度一下;鼠标移动到,设置上,点击动态显示的列表,高级搜索

#*_*coding:utf-8*_*

from selenium import webdriver
from selenium.webdriver import ActionChainsimport time driver = webdriver.Ie()
driver.get('https://www.baidu.com/')
#输入selenium 搜索
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click() #移动到 设置
element = driver.find_element_by_name('tj_settingicon')
ActionChains(driver).move_to_element(element).perform() #单击,弹出的Ajax
driver.find_element_by_link_text('高级搜索').click()

Selenium基础知识(二)鼠标操作的更多相关文章

  1. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

  2. python基础知识(二)

    python基础知识(二) 字符串格式化 ​ 格式: % 类型 ---- > ' %类型 ' %(数据) %s 字符串 ​ print(' %s is boy'%('tom')) ----> ...

  3. 菜鸟脱壳之脱壳的基础知识(二) ——DUMP的原理

    菜鸟脱壳之脱壳的基础知识(二)——DUMP的原理当外壳的执行完毕后,会跳到原来的程序的入口点,即Entry Point,也可以称作OEP!当一般加密强度不是很大的壳,会在壳的末尾有一个大的跨段,跳向O ...

  4. Dapper基础知识二

    在下刚毕业工作,之前实习有用到Dapper?这几天新项目想用上Dapper,在下比较菜鸟,这块只是个人对Dapper的一种总结. 2,如何使用Dapper?     首先Dapper是支持多种数据库的 ...

  5. Selenium 基础知识

    被测产品是B/S 结构,那么推荐selenium selenium 并不是单纯的一个工具,他是一组工具的集合 1. selenium IDE 是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器 ...

  6. SQL server基础知识(表操作、数据约束、多表链接查询)

    SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...

  7. Java基础知识二次学习--第三章 面向对象

    第三章 面向对象   时间:2017年4月24日17:51:37~2017年4月25日13:52:34 章节:03章_01节 03章_02节 视频长度:30:11 + 21:44 内容:面向对象设计思 ...

  8. Java基础知识二次学习-- 第一章 java基础

    基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一 ...

  9. selenium - webdriver - ActionChains类(鼠标操作)

    ActionChains 类提供了鼠标操作的常用方法: perform(): 执行所有 ActionChains 中存储的行为: context_click(): 右击: double_click() ...

随机推荐

  1. 品尝阿里云容器服务:初步尝试ASP.NET Core Web API站点的Docker自动化部署

    部署场景是这样的,我们基于 ASP.NET Core 2.0 Preview 1 开发了一个用于管理缓存的 Web API ,想通过阿里云容器服务基于 Docker 部署为内网服务. 在这篇博文中分享 ...

  2. [No0000115]打开Excel2016提示内存或磁盘空间不足的解决方法

    症状: 法一:右键文件,并 解除锁定: 法二: 在系统的服务中查看Windows Firewall服务 和Windows Update服务是否开启,如果没有开启就把他们启动一下. 1.在桌面的[计算机 ...

  3. Python:random模块

    近排练习代码时候经常会用到random模块,以防后面忘记还是需要记录一下. 首先导入模块: import random random.random():用于生成一个0到1的随机浮点数: 0 <= ...

  4. JS之JSON.parse和JSON.stringify

    这两个函数有兼容性问题, 会报错JSON"未定义 解决方案, 引入json2.js,可以解决浏览器的兼容性 https://link.jianshu.com/?t=https://githu ...

  5. iOS中的静态库与动态库,区别、制作和使用

    如果我们有些功能要给别人用,但是又不想公开代码实现,比如高德地图.第三方登录分享等等,这时候我们就要打包成库了.库分静态库和动态库两种: 静态库:以.a 和 .framework为文件后缀名.动态库: ...

  6. cruise-control

    https://github.com/linkedin/cruise-control https://engineering.linkedin.com/blog/2017/08/open-sourci ...

  7. 存储过程收集统计信息ORA-20000报错解决记录

    存储过程如下: create or replace procedure ad.table_analyse_bill( p_BillMonth in number,--bill_month p_tail ...

  8. mybatis获取批量插入的主键自增id

    一.写一个实体类 public class UserInfo { private long userId; private String userAccount; private String use ...

  9. CloudStack+KVM环境搭建(步骤很详细,说明ClockStack是用来管理虚拟机的)

    文章目录环境准备配置本地域名解析关闭selinux安装ntp服务安装管理端安装Mysql数据库安装服务端RPM:初始化CloudStack数据库:初始化cloudstack管理服务器安装系统虚拟机安装 ...

  10. 【JMeter】接口自动化环境搭建

    我们在学习接口自动化的时候,最理想的状态是在公司有项目可以操作.大部分时候我们并没有可以练习的项目,因此练习接口无从谈起,只能找一些开放的api来练一练,但是这样并不能提高我们的技术.因此我们需要搭建 ...