Selenium之ActionChains(一)
今天,分享的是ActionChains的使用方法。
先来说一下今天要用到的方法:
- click(element=null) 点击元素,参数为空时,鼠标在当前位置点击
- send_keys(keys_to_send) 向文本框发送文字、按键
- move_to_element(element) 鼠标悬浮在某元素上
- perform() 执行所有存储在ActionChains中的动作
ActionChains是什么呢?顾名思义,是一个动作链,如果在一个用例中只有一两个动作,那么用之前讲过的简单版的就可以了,如果动作很复杂,那么可以使用这个了。
- ActionChains是自动执行低级交互的一种方式,例如:鼠标移动,鼠标点按,键盘操作,文本操作等。
- 当我们调用这里的方法时,这些操作会被先储存在一个队列中,当我们调用perform()方法时,队列中的操作会被按顺序执行,执行后队列被清空。
下面以火狐首页为例,以一个较复杂的用例,来介绍几个最常用最常用的操作,先来看下需要用到的元素
第一组动作,在火狐首页,打开新浪新闻

<li class="site-multiple site-dropdown" sid="10">
<a class="dropdown-menu" href="http://www.sina.com.cn/" title="新 浪" style="width:45px">新 浪</a>
<div class="site-dropmenu" style="display: block;">
<a class="site-sub first" href="http://news.sina.com.cn/" title="新浪新闻">新浪新闻</a>
<a class="site-sub " href="http://sports.sina.com.cn/" title="新浪体育">新浪体育</a>
<a class="site-sub " href="http://finance.sina.com.cn/" title="新浪财经">新浪财经</a>
<a class="site-sub " href="http://mil.news.sina.com.cn/" title="新浪军事">新浪军事</a>
</div>
</li>


首先引入ActionChains包
from selenium.webdriver.common.action_chains import ActionChains
当然,我们还要引入wedbriver的包,用来启动浏览器
from selenium import webdriver

#定位新浪
sina = driver.find_element_by_css_selector("a[title='新 浪']")
#定位新浪新闻
news = driver.find_element_by_css_selector("a[title='新浪新闻']") #定义ActionChains
actions = ActionChains(driver)
#鼠标移动到“新浪”上点击“新浪新闻”
actions.move_to_element(sina).click(news).perform()

第二组操作,在搜索栏搜索“鹿晗”,点击搜索

<!-- 搜索框 -->
<input class="cheadSeaKey" name="q" value="请输入关键词" onfocus="if(this.value=='请输入关键词'){this.value='';}" onblur="if(this.value==''){this.value='请输入关键词';}" autocomplete="off" type="text"/>
<!-- 搜索按键 -->
<input class="cheadSeaSmt" value="搜索" type="submit"/>
actions = ActionChains(driver)
keys = driver.find_element_by_css_selector("input[value='请输入关键词']")
search = driver.find_element_by_css_selector("input[value='搜索']")
keys.click()
actions.send_keys(u"鹿晗")
actions.click(search).perform()
全部代码 ActionChains1

import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver driver=webdriver.Firefox()
driver.get("http://e.firefoxchina.cn/")
time.sleep(3)
print("打开网页成功") #定位
sina=driver.find_element_by_css_selector("a[title='新 浪']")
news=driver.find_element_by_css_selector("a[title='新浪新闻']") #定义动作
actions=ActionChains(driver)
actions.move_to_element(sina).click(news).perform()
actions.perform() #切换窗口
driver.switch_to_window(driver.window_handles[-1])
print(driver.title) #第二组动作
actions=ActionChains(driver)
keys=driver.find_element_by_css_selector("input[value='请输入关键词']")
search=driver.find_element_by_css_selector("input[value='搜索']")
keys.click()
actions.send_keys(u"鹿晗")
actions.click(search).perform()

Selenium之ActionChains(一)的更多相关文章
- selenium 之 ActionChains (二)
今天,小编为大家介绍的是标题中的三个新方法,以及一个老方法 以下方法都需要操作一个名为Keys的包,先来简单认识下 ALT = u'\ue00a' CONTROL = u'\ue009' ENTER ...
- Selenium之ActionChains (二)
今天,为大家介绍的是标题中的三个新方法,以及一个老方法 以下方法都需要操作一个名为Keys的包,先来简单认识下 Keys key_down(value,element),key_up(value,el ...
- selenium - webdriver - ActionChains类(鼠标操作)
ActionChains 类提供了鼠标操作的常用方法: perform(): 执行所有 ActionChains 中存储的行为: context_click(): 右击: double_click() ...
- Selenium之ActionChains类、Keys类
ActionChains类(鼠标操作)常用于模拟鼠标的行为,比如单击.双击.拖拽等行为. 一些常用的模拟鼠标的操作方法有: click(on_element=None) --- 鼠标单击 do ...
- selenium学习-ActionChains方法列表
ActionChains方法列表 click(on_element=None) ——单击鼠标左键 click_and_hold(on_element=None) ——点击鼠标左键,不松开 contex ...
- python3 web测试模块selenium
selenium是一个用于web应用程序测试工具,selenium测试直接运行在浏览器中,就像真正的用户在操作一样,支持的浏览器包括IE(7,8,9,10,11),mozilla firefox,sa ...
- python selenium 报错unknown error: cannot focus element 解决办法
登录框由于js限制,定位到元素后无法sendkey ,sendky报错如下: selenium.common.exceptions.WebDriverException: Message: unkno ...
- 【tips】自动化测试工具 - selenium和phantomJS
### 目录清单 selenium和phantomjs概述 selenium常用API 案例操作:模拟登陆csdn 1. selenium和phantomJS是什么东西 selenium是一套web网 ...
- selenium中元素操作之简单的鼠标、键盘操作(三)
1.鼠标操作导入类:ActionChains --鼠标的操作形成一连串的动作链,由selenium的ActionChains类来完成模拟鼠标操作手表操作的过程:1.鼠标的操作,先放到一个列表中2.利用 ...
随机推荐
- WDA基础九:BusinessGraphics
好像很少有人用这玩意...好难玩,好废...和ABAP的那个图一样废.... 很多报表都是用BO,BI什么做的,不仅废,而且很多BO顾问不懂代码,写出来的报表挫的要死.... WDA的网页图形报表分析 ...
- Ajax请求中的async:false/true的作用【转载】
[Ajax请求中的async:false/true的作用] 作者:https://www.cnblogs.com/mmzuo-798/p/7098979.html 前言: 昨天在做倒计时修改的时候,发 ...
- 十六、JAVA基础(堆和栈)
一.堆和栈 堆和栈都是JAVA中的存储结构,也就是说,都是内存中存放数据的地方. 1.堆:(存放由new创建的对象和数组) 引用类型的变量,内存分配一般在堆上或者常量池(字符串常量,基本数据类型常量) ...
- 反向代理/负载均衡/session/cookie
正向代理:客户端将流量重定向到burpsuite等软件或连接到VPN再访问服务器而不是直接访问服务器的场景.流量流动方向是真正机器--代理服务器.正向代理又称代理.普通代理. 反向代理:服务器端使用反 ...
- Kali安装教程(VMWare)
1.下载镜像及相关 1.1下载镜像文件 下载链接:https://www.kali.org/downloads/ 选择自己需要的版本下载,根据经验先下载种子文件(torrent)再用迅雷下载网速是最有 ...
- 动态规划入门——数字三角形(Java)
动态规划的概念对于新手来说枯燥难懂,就算看懂了,做题的时候依旧抓耳挠腮的毫无头绪,这些比较难理解的算法,还是需要根据例子来一步步学习和理解,从而熟练掌握,下面,咱们就通过一个简单的小例子来学习动态规划 ...
- vim 文本会在末尾自动添加换行 md5文件和数据只不对应
在linux系统 vim md5data # 打开文件 写入 abc 保存 md5sum md5Data 的计算值和openssl代码计算值不一样 原因在于linux文本文件末尾自动添加了换行 解 ...
- Toy Factory
Factory is a design pattern in common usage. Please implement a ToyFactory which can generate proper ...
- Android : 修改内核源码 and 编译、打包成新的boot.img
一.Android内核源码的下载: 1.Google GIT地址: $ git clone https://android.googlesource.com/kernel/common.git $ g ...
- 编程实现Linux系统的od功能
选做题目以及分析 题目:编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 分析:我觉得这道题目中的参数应当是-tx1而不是-tx,使用了-tx后结 ...