今天,分享的是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(一)的更多相关文章

  1. selenium 之 ActionChains (二)

    今天,小编为大家介绍的是标题中的三个新方法,以及一个老方法 以下方法都需要操作一个名为Keys的包,先来简单认识下 ALT = u'\ue00a' CONTROL = u'\ue009' ENTER ...

  2. Selenium之ActionChains (二)

    今天,为大家介绍的是标题中的三个新方法,以及一个老方法 以下方法都需要操作一个名为Keys的包,先来简单认识下 Keys key_down(value,element),key_up(value,el ...

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

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

  4. Selenium之ActionChains类、Keys类

    ActionChains类(鼠标操作)常用于模拟鼠标的行为,比如单击.双击.拖拽等行为. 一些常用的模拟鼠标的操作方法有: click(on_element=None)     --- 鼠标单击 do ...

  5. selenium学习-ActionChains方法列表

    ActionChains方法列表 click(on_element=None) ——单击鼠标左键 click_and_hold(on_element=None) ——点击鼠标左键,不松开 contex ...

  6. python3 web测试模块selenium

    selenium是一个用于web应用程序测试工具,selenium测试直接运行在浏览器中,就像真正的用户在操作一样,支持的浏览器包括IE(7,8,9,10,11),mozilla firefox,sa ...

  7. python selenium 报错unknown error: cannot focus element 解决办法

    登录框由于js限制,定位到元素后无法sendkey ,sendky报错如下: selenium.common.exceptions.WebDriverException: Message: unkno ...

  8. 【tips】自动化测试工具 - selenium和phantomJS

    ### 目录清单 selenium和phantomjs概述 selenium常用API 案例操作:模拟登陆csdn 1. selenium和phantomJS是什么东西 selenium是一套web网 ...

  9. selenium中元素操作之简单的鼠标、键盘操作(三)

    1.鼠标操作导入类:ActionChains --鼠标的操作形成一连串的动作链,由selenium的ActionChains类来完成模拟鼠标操作手表操作的过程:1.鼠标的操作,先放到一个列表中2.利用 ...

随机推荐

  1. 3.Liunx网络管理命令

    大纲: 1.网络信息:hostname.netstat.ifconfig ,route 2.网络配置:netconfig 3.网络测试:ping

  2. java中super和this的使用

    要说super就先要说this."this",作为一个特殊的关键字,它的规则如下: 1.可以表示构造函数传递.this(a,b)表示调用另外一个构造函数.这里面的this就是一个特 ...

  3. 一步步构建iOS路由

    什么是移动端路由层: 路由层的概念在服务端是指url请求的分层解析,将一个请求分发到对应的应用处理程序.移动端的路由层指的是将诸如App内页面访问.H5与App访问的访问请求和App间的访问请求,进行 ...

  4. 【转】vue.js表单校验详解

    官方文档:https://monterail.github.io/vuelidate/ https://github.com/monterail/vuelidate 1.npm安装vue-valida ...

  5. Linux int 最大为多大

    可以查看 /usr/include/limits.h 文件 里面定义好了各种类型的最大最小值 ... /* Minimum and maximum values a `signed int' can ...

  6. mysql迁移到ubuntu遇到到问题

    1.表名大小写敏感,linux下到mysql: 数据库名与表名是严格区分大小写的: 表的别名是严格区分大小写的: 列名与列的别名在所有的情况下均是忽略大小写的: 变量名也是严格区分大小写的. 修改方法 ...

  7. CAD(布置厨洁具)(尺寸标注)5.12

    "TYTK"打开图库,找到平面厨具和洁具.双击选中的厨具,A可以不停旋转90度.给厨具选取正确的位置.画出灶台线,同理画出卫生间的家具.绘制出洗脸台的平台.浴缸的平台. 尺寸标注: ...

  8. 逆袭之旅DAY13.东软实训.Oracle.简单的查询语句.限制.排序

    2018-07-09  21:34:00 一.简单查询: .查询数据表的所有列: SELECT * FROM 表名; SELECT 列名,列名.... FROM 表名; .起别名: SELECT 列名 ...

  9. spark使用正则表达式读入多个文件

    String dir = "s3a://example/";String currentDir = dir + "{1[5-9],2[01]}/*.txt";J ...

  10. day14-python异常处理

    1.     异常 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常.异常是Python对象,表示一个错误.当Pyt ...