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

#定位新浪
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()
全部代码
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()
selenim之ActionChains(一)的更多相关文章
- selenim之ActionChains 用法
常见的点击方法集锦: 参数: 1.driver是我们的浏览器 2.Actions是我们系统内置的执行鼠标一系列操作的对象 鼠标左击:Actions actions=new Actions(driver ...
- selenium 之 ActionChains (二)
今天,小编为大家介绍的是标题中的三个新方法,以及一个老方法 以下方法都需要操作一个名为Keys的包,先来简单认识下 ALT = u'\ue00a' CONTROL = u'\ue009' ENTER ...
- python selenium鼠标键盘操作(ActionChains)
用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击.双击.点击鼠标右键.拖拽等等.而selenium给我们提供了一个类来处理这类事件--ActionChains sele ...
- Selenium之动作链(ActionChains)
用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击.双击.点击鼠标右键.拖拽等等.而selenium给我们提供了一个类来处理这类事件——ActionChains se ...
- selenium之 玩转鼠标键盘操作(ActionChains)
用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击.双击.点击鼠标右键.拖拽等等.而selenium给我们提供了一个类来处理这类事件——ActionChains sele ...
- Python selenium ActionChains 基本操作
ActionChains类继承自object类,但是需要为其传入一个driver对象,即ActionChains(driver) 此类常用于模拟鼠标键盘操作,其API列表如下: perform() ...
- Selenium之ActionChains (二)
今天,为大家介绍的是标题中的三个新方法,以及一个老方法 以下方法都需要操作一个名为Keys的包,先来简单认识下 Keys key_down(value,element),key_up(value,el ...
- Selenium之ActionChains(一)
今天,分享的是ActionChains的使用方法. 先来说一下今天要用到的方法: click(element=null) 点击元素,参数 ...
- selenium+python自动化94-行为事件(ActionChains)源码详解
ActionChains简介 actionchains是selenium里面专门处理鼠标相关的操作如:鼠标移动,鼠标按钮操作,按键和上下文菜单(鼠标右键)交互. 这对于做更复杂的动作非常有用,比如悬停 ...
随机推荐
- 委托、事件、Observer观察者模式的使用解析二
一.设计模式-Observer观察者模式 Observer设计模式是为了定义对象间的一种一对多的依赖关系,以便于当一个对象的状态改变时,其他依赖于它的对象会被自动告知并更新.Observer模式是一种 ...
- less使用ch1--认识语法
@charset "utf-8"; //注释------------------------------ /*我是可以被编译出来的*/ //不能被编译出来 //变量-------- ...
- python之串口操作
1.安装pyserial linux上直接安装: #python2 sudo pip install pyserial #或者python3 sudo pip3 install pyserial Wi ...
- spring cloud+dotnet core搭建微服务架构:配置中心(四)
前言 我们项目中有很多需要配置的地方,最常见的就是各种服务URL地址,这些地址针对不同的运行环境还不一样,不管和打包还是部署都麻烦,需要非常的小心.一般配置都是存储到配置文件里面,不管多小的配置变动, ...
- DevOps之归纳总结
唠叨话 关于德语关我屁事的知识点,仅提供精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. DevOps归纳总结 <DevOps功能与性能>浏览器(饼干Cookie.会话Sessi ...
- Python实现采集wordpress整站数据的爬虫
最近爱上了python,就非常喜欢使用python来练手,在上次的基础上完善一下代码,实现采集wordpress程序的网站的整站数据的爬虫程序,本站也是采用的wordpress,我就拿吾八哥网(htt ...
- linux系统下Python虚拟环境的安装和使用
前言:进行python项目开发的时候,由于不同的项目需要使用不同的资源包和相关的配置,因此创建多个python虚拟环境,在虚拟环境下开发就显得很有必要. 安装虚拟环境 步骤: 打开Linux终端(快捷 ...
- Spring装配Bean之组件扫描和自动装配
Spring从两个角度来实现自动化装配: 组件扫描:Spring会自动发现应用上下文中所创建的bean. 自动装配:Spring自动满足bean之间的依赖. 案例:音响系统的组件.首先为CD创建Com ...
- WAMPServer安装关于MSVCR110.dll丢失的解决办法
安装完成后出现如下提示: 解决办法 请参阅:计算机中丢失 msvcr110.dll 怎么办 为了防止原地址失效,下面简单说下原地址的内容: 到 http://www.microsoft.com/zh ...
- pylot网站压力测试
windows下使用python进行网站压力测试,有两个必不可少的程序需要安装,一个是python,另一个是pylot.python是一个 安装软 件,用来运行python程序,而pylot则是pyt ...