一、鼠标事件

清单 1. 鼠标左键点击

Actions action = new Actions(driver);action.click();// 鼠标左键在当前停留的位置做单击操作

action.click(driver.findElement(By.name(element)))// 鼠标左键点击指定的元素

清单 2. 鼠标右键点击

Actions action = new Actions(driver);

action.contextClick();// 鼠标右键在当前停留的位置做单击操作

action.contextClick(driver.findElement(By.name(element)))// 鼠标右键点击指定的元素

清单 3. 鼠标双击操作

Actions action = new Actions(driver);

action.doubleClick();// 鼠标在当前停留的位置做双击操作

var script = document.createElement('script');

script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);

action.doubleClick(driver.findElement(By.name(element)))// 鼠标双击指定的元素

清单 4. 鼠标拖拽动作

Actions action = new Actions(driver);

// 鼠标拖拽动作,将 source 元素拖放到 target 元素的位置。  action.dragAndDrop(source,target);

// 鼠标拖拽动作,将 source 元素拖放到 (xOffset, yOffset) 位置,其中 xOffset 为横坐标,yOffset 为纵坐标。

action.dragAndDrop(source,xOffset,yOffset);

在这个拖拽的过程中,已经使用到了鼠标的组合动作,首先是鼠标点击并按住

(click-and-hold) source 元素,然后执行鼠标移动动作 (mouse move),移动到 target 元素位置或者是 (xOffset, yOffset) 位置,再执行鼠标的释放动作 (mouse release)。所以上面的方法也可以拆分成以下的几个执行动作来完成:

action.clickAndHold(source).moveToElement(target).perform();   action.release();

清单 5. 鼠标悬停操作

Actions action = new Actions(driver);

action.clickAndHold();// 鼠标悬停在当前位置,既点击并且不释放  action.clickAndHold(onElement);// 鼠标悬停在 onElement 元素的位置

action.clickAndHold(onElement) 这个方法实际上是执行了两个动作,首先是鼠标移动到元素 onElement,然后再 clickAndHold, 所以这个方法也可以写成 action.moveToElement(onElement).clickAndHold()。

清单 6. 鼠标移动操作

Actions action = new Actions(driver);

action.moveToElement(toElement);// 将鼠标移到 toElement 元素中点 // 将鼠标移到元素 toElement 的 (xOffset, yOffset) 位置,

//这里的 (xOffset, yOffset) 是以元素 toElement 的左上角为 (0,0) 开始的 (x, y) 坐标轴。

var cpro_psid ="u2572954"; var cpro_pswidth =966; var cpro_psheight =120;

action.moveToElement(toElement,xOffset,yOffset)

// 以鼠标当前位置或者 (0,0) 为中心开始移动到 (xOffset, yOffset) 坐标轴  action.moveByOffset(xOffset,yOffset);

action.moveByOffset(xOffset,yOffset) 这里需要注意,如果 xOffset 为负数,表示横坐标向左移动,yOffset 为负数表示纵坐标向上移动。而且如果这两个值大于当前屏幕的大小,鼠标只能移到屏幕最边界的位置同时抛出 MoveTargetOutOfBoundsExecption 的异常。 鼠标移动操作在测试环境中比较常用到的场景是需要获取某元素的 flyover/tips,实际应用中很多 flyover 只有当鼠标移动到这个元素之后才出现,所以这个时候通过执行

moveToElement(toElement) 操作,就能达到预期的效果。但是根据我个人的经验,这个方法对于某些特定产品的图标,图像之类的 flyover/tips 也不起作用,虽然在手动操作的时候移动鼠标到这些图标上面可以出现 flyover, 但是当使用 WebDriver 来模拟这一移动操作时,虽然方法成功执行了,但是 flyover 却出不来。所以在实际应用中,还需要对具体的产品页面做相应的处理。

清单 7. 鼠标释放操

Actions action = new Actions(driver);   action.release();// 释放鼠标

PS:一般只使用移动的事件,不点击的情况下鼠标事件可以不释放

二、模拟键盘

就是输入键盘的键

// 模拟键盘操作public void ActionKeys() {Actions actions = new Actions(driver);driver.get("https://www.baidu.com");WebElement input = driver.findElement(By.id("kw"));input.sendKeys("selenium 教程");common.WaitSeconds(2000);input.sendKeys(Keys.ENTER);// 百度输入了之后输入enter键}

转载于:https://www.cnblogs.com/zh1990/p/10649012.html

Selenium-actions相关推荐

  1. Java Selenium Actions模拟鼠标拖动dragAndDrop总结

    鼠标拖动API Actions action = new Actions(webdriver); ##source-要拖动的元素A,target-拖动元素A到达的目标元素 action.dragAnd ...

  2. Selenium(一)12.Actions的常用方法

    1.鼠标悬停 一般有一些下拉菜单需要鼠标放在下拉箭头才会出现,这个时候就需要鼠标悬停的操作进行下一步操作 应用: package com.ming.Selenium.Actions;import or ...

  3. Selenium 中文API

    Selenium 中文API 转自:http://blog.csdn.net/lh9529/article/details/3946567 概念 Selenium 通过命令进行驱动.Selenium  ...

  4. selenium IDE命令全手册/Selenium reference中文版

    selenium IDE命令全手册 selenium IDE命令全手册 概念 三类命令 命令形式 pattern string-match patterns 元素定位器 Element Filters ...

  5. Python + GitHub Actions 实现 CSDN 自动签到与抽奖(非 selenium 版本)

    文章目录 [1x00]技术栈 [2x00]代码实现签到与抽奖 [3x00]签到结果通知 [03x01]Server 酱 [03x02]企业微信 [03x03]钉钉 [4x00]自动签到 [5x00]完 ...

  6. selenium如何操作HTML5的画布canvas上的元素

    话不多少,上图如下,下图红色框内是一个html5的画布,我们要像操作右上角的保存和数据视图的时候是无法公共selenium的普通定位操作到的,那该怎么办呢? 我们先new一个Selenium的acti ...

  7. selenium 常用操作

    官方文档: https://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver. ...

  8. Selenium Web 自动化 - Selenium常用API

    Selenium Web 自动化 - Selenium常用API 2016-08-01 目录 1 对浏览器操作   1.1 用webdriver打开一个浏览器   1.2 最大化浏览器&关闭浏 ...

  9. Selenium 页面自动化测试 面试 问题汇总

    1.   专业技术 在学习完Selenium的大部分接口或者方法之后,你可能会去面试自动化测试,主要是Selenium的自动化测试.下面这些问题总结,可能会对你有所帮助. 什么是Selenium? S ...

  10. java selenium常用API(WebElement、iFrame、select、alert、浏览器窗口、事件、js) 一

     WebElement相关方法 1.点击操作 WebElement button = driver.findElement(By.id("login")); button.clic ...

最新文章

  1. ResNet被全面超越了,是Transformer干的:依图科技开源“可大可小”T2T-ViT,轻量版优于MobileNet...
  2. 还原dede数据后系统基本参数空白无显示的解决方法
  3. java线程内存模型_深度解析Java多线程的内存模型
  4. 【XSY2111】Chef and Churus 分块 树状数组
  5. 用于UML前端展示的jsuml2插件
  6. Tell router update config
  7. 三菱5uplc伺服电机指令_PLC中伺服控制指令的应用
  8. 数据血缘关系图 工具_QCSPCChart SPC控制图工具,QCSPCChart SPC精湛而轻松
  9. Proteus仿真:存储器
  10. oracle 表空间满了排查和解决(ORA-1653: unable to extend table test by 128 in tab)
  11. es集群状态yellow排查
  12. iOS小技能:app侧登录流程【上篇】 (前置知识)
  13. Android 输入法框架 (2)- 输入法显示和隐藏
  14. 警察规范执法案例_警察改革沉浸式技术可以改变执法方式
  15. Linux系列之soft lockup机制 浅析
  16. [转]量化必读:Tick 数据到底是什么?为什么很难找到可靠的交易数据?
  17. kirin710f是什么处理器_HUAWEIKirin710F处理器是什么机型?
  18. prometheus 报警规则
  19. 我很忙!你忙什么?瞎忙!
  20. 3dgis java,三维GIS研发思路

热门文章

  1. TSW马宝国杯 web(我马宝国被黑了)
  2. iOS 环信移动客服接入
  3. 怎样用python删除excel中的_Python+Xlwings 删除Excel的行和列
  4. 机智云IOT软件平台受邀参展STM32全国巡回研讨会/中国电信天翼智能生态博览会/签署“5G+天翼云+AI”战略合作
  5. SOT-23封装如何查找元件型号
  6. 初学模糊逻辑控制(Fuzzy Logic Control)
  7. Java实现 LeetCode 319 灯泡开关
  8. U-boot下编写代码对SPI flash进行操作
  9. 计算机三级嵌入式学习笔记(一)
  10. 架构图解_图解 Docker 架构