在测试使用Selenium webdriver测试WEB系统的时候,用到了模拟鼠标、键盘的一些输入操作。

1、鼠标的左键点击、双击、拖拽、右键点击等;

2、键盘的回车、回退、空格、ctrl、alt、shift等;

在webdriver中,有专门的一个类,是用来进行鼠标、键盘模拟操作的,那就是Actions类,该类使用时,又会涉及到Keyboard、Mouse、CompositeAction(复合动作),先对Mouse的方法做简单罗列,然后再用代码说明:

1、鼠标左键点击:

Actions action = new Actions(driver);

action.click(driver.findElement(By.by);

左键点击是普通常用的方法,前面已经介绍过一种更简单的方法:

Driverdriver=new Driver();

driver.findElement(By.xpath(xpath)).click();

2、鼠标左键双击:

Actionsaction = new Actions(driver);

action.doubleClick(driver.findElement(By.xpath(xpath)));

3、鼠标左键按下操作:

Actionsaction = new Actions(driver);

action.clickAndHold(driver.findElemen(By.xpath(xpath)));

4、鼠标左键移动到元素操作:

Actionsaction = new Actions(driver);

action.moveToElement(driver.findElement(By.xpath(xpath)));

5、鼠标右键点击操作:

Actionsaction = new Actions(driver) ;

action.contextClick(driver.findElement(By.xpath(xpath)));

6、组合的鼠标操作(将目标元素拖拽到指定的元素上):

Actionsaction = new Actions(driver);

action.dragAndDrop(driver.findElement(By.xpath(xpath)),driver.findElement(By.xpath(xpath)));

7、组合的鼠标操作(将目标元素拖拽到指定的元素上):

Actionsaction = new Actions(driver);

action.dragAndDrop(driver.findElement(By.xpath(xpath)),xOffset,yOffset);

代码演示:

driver.get("http://www.baidu.com");

driver.findElement(By.name("wd")).sendKeys("林丹");

//点击操作

driver.findElement(by.id("su")).click();

driver.navigate().back();

Actionsaction=new Actions(driver);

action.click(driver.findElement(by.id("su")));

//双击操作(略)

//拖拽选择操作,鼠标按住不放,进行拖拽选择,然后释放鼠标,需要三个动作

action.clickAndHold(driver.findElement(By.id("1"))).moveToElement(driver.findElement(By.id("3"))).perform();

action.release();

//拖拽元素,将一个元素拖拽到另一个元素上,然后释放鼠标(略)

键盘模拟操作,包括普通按键,比如enter、backspace、tab等,还包括四个修饰键(Modifier Keys),分别是Caps Lock,Control,Option,Command。

普通按键使用时,直接使用sendkeys(theKeys)就可以,如按下enter键:

action.sendKeys(Keys.ENTER).perform();

修饰键一般使用时,是和别的按键配合使用的,比如快捷键ctrl+F4,这时就得使用keyDown(theKeys)、keyUp(theKeys)来操作,代码如下:

driver.get("http://www.baidu.com");

driver.findElement(by.name("wd")).sendKeys("林丹");

Actionsaction=new Actions(driver);

//输入框中输入内容,然后点击回车进行百度

action.sendKeys(Keys.ENTER).perform();

//使用快捷键alt+f4关闭窗口(但是该方法不稳定,时行时不行,不行居多)

action.keyDown(keys.ATL).keyDown(keys.F4).keyUp(keys.ALT).perform();

//使用ctrl+a全选

driver.findElement(By.id("kw")).click();

action.sendKeys(Keys.CONTROL+"a").perform();

Tips:

1、拖拽选择时,使用clickAndHold和moveToElement时,会受到鼠标所在位置的影响,所以尽量是两个方法一起使用;

2、拖拽元素时,dragAndDrop方法,我没有找到实现的场景,所以没有写代码试验;

3、直接按下普通按键时,直接使用sendkeys(theKeys)方法就能够实现;

4、需要使用修饰键时,需要连贯动作中应该使用keydown和keyup方法;

action.keyDown(keys.ATL).sendKeys(keys.F4).keyUp(keys.ALT).perform();//这是不能实现alt+f4关闭窗口的效果的,只能实现单独按f4的效果

5、对于一些快捷键,如ctrl+a,可以直接sendkeys(Keys.CONTROL+"a")。

selenium webdriver模拟鼠标键盘操作的更多相关文章

  1. Java+selenium之WebDriver模拟鼠标键盘操作(六)

    org.openqa.selenium.interactions.Actions类,主要定义了一些模拟用户的鼠标mouse,键盘keyboard操作.对于这些操作,使用 perform()方法进行执行 ...

  2. selenium webdriver模拟鼠标键盘

    在测试使用Selenium webdriver测试WEB系统的时候,用到了模拟鼠标.键盘的一些输入操作. 1.鼠标的左键点击.双击.拖拽.右键点击等: 2.键盘的回车.回退.空格.ctrl.alt.s ...

  3. 将CodedUI Test 放到控制台程序中,模拟鼠标键盘操作

    CodedUI Test是微软的自动化测试工具,在VS中非常好用.可以用来模拟鼠标点击,键盘输入.但执行的时候必须要用mstest调用,无法传入参数(当然可以写入config文件中,但每次修改十分麻烦 ...

  4. selenium webdriver(4)---模拟鼠标键盘操作

    webdriver提供Actions来模拟鼠标悬浮.拖拽和键盘输入等操作,详细代码见org.openqa.selenium.interactions.Actions.本文通过几个实例来说明Action ...

  5. selenium webdriver从安装到使用(python语言),显示等待和隐性等待用法,切换窗口或者frame,弹框处理,下拉菜单处理,模拟鼠标键盘操作等

    selenium的用法 selenium2.0主要包含selenium IDE 和selenium webDriver,IDE有点类似QTP和LoadRunner的录制功能,就是firefox浏览器的 ...

  6. selenium模拟鼠标键盘操作

    简单操作: 1.点击(鼠标左键)页面按钮:click() 2.清空输入框:clear() 3.输入字符串:send_keys()submit提交表单: 1.一般情况可以点击搜索按钮来搜索 2.也可以用 ...

  7. python模拟鼠标键盘操作 GhostMouse tinytask 调用外部脚本或程序 autopy右键另存为

    0.关键实现:程序窗口前置 python 通过js控制滚动条拉取全文 通过psutil获取pid窗口句柄,通过win32gui使程序窗口前置 通过pyauto实现右键菜单和另存为操作 1.参考 aut ...

  8. selenuim2模拟鼠标键盘操作

    有时候有些元素不便点击或者做其他的操作,这个时候可以借助selenium提供的Actions类,它可以模拟鼠标和键盘的一些操作,比如点击鼠标右键,左键,移动鼠标等操作.对于这些操作,使用perform ...

  9. selenium - webdriver - Keys类(键盘操作)

    Keys()类提供了键盘上几乎所有按键的方法,这个类可用来模拟键盘上的按键,包括各种组合键,如 Ctrl+A, Ctrl+X,Ctrl+C, Ctrl+V 等等 from selenium impor ...

随机推荐

  1. mvc4 初体验(一)

    [AllowAnonymous] [AllowAnonymous] 属性,允许匿名 在BaseControler里面加一个[Authorize],所有要验证的页面都继承BaseControler, 不 ...

  2. c++ istream转换为std::string

    std::istreambuf_iterator<char> eos; std::string s(std::istreambuf_iterator<char>(stream) ...

  3. 编译内核时出现__bad_udelay错误

    今天编译内核时候遇到了__bad_udelay错误,然后编不过去了,仔细一看发现是udelay函数的参数太大,内核不允许延时这么多.于是换成了mdelay函数,以毫秒为单位延时,问题解决.

  4. 第二步 使用Cordova 3.0(及以上版本) 创建安卓项目(2014-6-25)

    参考资料: http://www.cnblogs.com/numtech/p/3233469.html http://blog.sina.com.cn/s/blog_9e245c690101jurr. ...

  5. RedHat 简易配置 VNC Server 与VNC View详细说明

    首先下载Linux版本的VNC文件. 下载地址:http://www.realvnc.com/download/vnc/ 如:VNC-5.0.2-Linux-x86-RPM.tar.gz(其实解压出来 ...

  6. 硬件RDMA的驱动配置和测试

    author:headsen chen date: 2019-01-18  10:22:20 notice:created  by headsen chen himself and not allow ...

  7. Mac OS 安装phpMyAdmin

    http://www.coolestguyplanettech.com/installing-phpmyadmin-on-mac-osx-10-7-lion/

  8. Java虚拟机八 分析Java堆

    常见的内存溢出的原因及其解决思路 1.堆溢出: 由于大量的对象都直接分配在堆上,因此它最有可能发生溢出.因为大量对象占据了堆空间,而这些对象都持有强引用,导致无法回收,当对象大小之和大于堆空间时就会发 ...

  9. Google Drive 里的文件下载的方法

    Google Drive 里并不提供创建直接下载链接的选项,但是可以通过小小的更改链接形式就能把分享的内容保存到本地.例如,一份通过 Google Drive 分享的文件链接形式为: https:// ...

  10. 牛客网多校赛第九场A-circulant matrix【数论】

    链接:https://www.nowcoder.com/acm/contest/147/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...