关键词不能为空

当前您在: 主页 > 英语 >

总结Selenium WebDriver中一些鼠标和键盘事件的使用

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 05:42
tags:

-

2021年2月28日发(作者:颜色英文)


本文将总结



Selenium WebDriver


中的一些鼠标和键盘事件的使用,以及组合键的使用,

< p>
并且将介绍



WebDriver


中没有实现的键盘事件(


Keys


枚 举中没有列举的按键)的扩展。


举例说明扩展



Alt+PrtSc


组合键来截取当前活动窗口并将剪切板图像保存到文件。



在使用



Selenium WebDriver


做自动化测试的时候,会经常模拟鼠标和键盘的一些行为。


比如使用鼠标单击、双击、右击、拖拽等动作;或者键盘输入、快捷键使用、组合键使用等


模拟键盘的操作。在



WebDeriver


中,有一个专门的类来负责实现这些测试场景,那就是



Actions


类,在使用该类的过程中会配合使用到



Keys


枚举以及



Mouse




Keyboard



CompositeAction


等类。



其次,在实际测试过程中,可能会遇到某些按键没办法使用



Actions



Keys


等类来实现的


情况。



比如通过使用



Alt+PrtSc


组合键来实现截取屏幕当前活动窗口的图像,




Keys



举中,因为没有枚举出



PrtSc


键,所以没办法通过



Action




KeyDown(Keys)


来模拟按


下这个动作。



再次是在自动化测试中,


可能会遇到一些附件、文件上传的场景,

< p>
或者是多文件上传,


这些




Selenium2.0


之后,可以直接使用



WebElement


类的



sendKeys()


方法来实现。



下面就分别介绍这些情况的具体使用。



鼠标点击操作



鼠标点击事件有以下几种类型:



清单



1.


鼠标左键点击



Actions action = new Actions(driver);();//


鼠标左键在当前停留的位置做


单击操作



(ement((element)))//


鼠标左键点击指定的元素



清单



2.


鼠标右键点击



Actions action = new Actions(driver);


tClick();//


鼠标右键在当前停留的位置做单击操作



tClick(ement((element)))//


鼠标右键点击指定的元




清单



3.


鼠标双击操作



Actions action = new Actions(driver);


Click();//


鼠标在当前停留的位置做双击操作



Click(ement((element)))//


鼠标双击指定的元素



清单



4.


鼠标拖拽动作



Actions action = new Actions(driver);


//


鼠标拖拽动作,将


source


元素拖放到


target


元素的位置。



dDrop(source,target);


//


鼠标拖拽动作,将


source


元素拖放到


(xOffset, yOffset)


位置,其中


xOffset


为横坐标,


yOffset


为纵坐标。



dDrop(source,xOffset,yOffset);

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



(click-and-hold) source


元素,然后执行鼠标移动动作



(mouse move)


,移动到



target



素位置或者是



(xOffset, yOffset)


位置,再执行鼠标的释放动作



(mouse release)


。所以上

面的方法也可以拆分成以下的几个执行动作来完成:



nd Hold(source).moveToElement(target).perform();


e();


清单



5.


鼠标悬停操作



Actions action = new Actions(driver);


ndHold();//


鼠标悬停在当前位置,既点击并且不释放



ndHold(onElement);//


鼠标悬停在


onElement


元素的位置



ndHold(onElement)


这个方法实际上是执行 了两个动作,


首先是鼠标移动到元




onElement


,然后再



clickAndHold,


所以这个方法也可以写成



Eleme nt(onElement).clickAndHold()




清单



6.


鼠标移动操作



Actions action = new Actions(driver);


Element(toElement);//


将鼠标移到


toElement


元素中点



//


将鼠标移到元素


toElement



(xOffset, yOffset)


位置,



//


这里的


(xOffset,


yOffset)


是以元素


toElement


的左上角为


(0,0)


开始的


(x,


y)


坐标轴。



Element(toElement,xOffset,yOffset)


//


以鼠标当前位置或者


(0,0)


为中心开始移动到


(xOffset, yOffset)


坐标轴



Offset(xOffset,yOffset);


Offset(xOffset,yOffset)


这里需要注意,如果



xOffset


为负数,表示横坐标


向左移动,


yOf fset


为负数表示纵坐标向上移动。而且如果这两个值大于当前屏幕的大小,


鼠标只能移到屏幕最边界的位置同时抛出



MoveTargetOutOfBoundsExecption


的异常。



鼠标移动操作在测试环境中 比较常用到的场景是需要获取某元素的



flyover/ti ps


,实际应用


中很多



flyover


只有当鼠标移动到这个元素之后才出现,所以这个时候通过执行



moveToElement(toElement)


操作,


就能达到预期的效果。


但是根据我个人的经验,


这个方


法对于某些特定产品的图标,图像之类的



flyover/tips


也不起作用,

虽然在手动操作的时候


移动鼠标到这些图标上面可以出现



flyover,


但是当使用



WebDriver


来模拟这一移动操作

时,虽然方法成功执行了,但是



flyover


却出不来。所以在实际应用中,还需要对具体的产


品页面做相应的处理 。



清单



7.


鼠标释放操



Actions action = new Actions(driver);


e();//


释放鼠标



键盘模拟操作



对于键盘的模拟操作,


Actions


类中有提供



keyUp(theKe y)



keyDown(theKey)



sendKeys(keysToSend)


等方法来实 现。


键盘的操作有普通键盘和修饰键盘



Modifier Keys,


下面的章节将讲到修饰键的概念)两种



:


1.


对于普通键盘,


使用



sendKeys(keysToSend)


就可以实现,


比如按键



TAB



Backspace


等。



清单



8.


普通键盘模拟



sendKeys(keysToSend)


Actions action = new Actions(driver);


ys();//


模拟按下并释放


TAB




ys();//


模拟按下并释放空格键



/***


针对某个元素发出某个键盘的按键操作,或者是输入操作,



比如在


input


框中输入某个字 符也可以使用这个方法。这个方法也可以拆分成


:


(elem ent).sendKeys(keysToSend)




*/


ys(element,keysToSend);


注意除了



Actions


类有



sendKeys



keysToSend


)方法外,


WebElement


类也有一个



sendKeys



keysToSend

< p>
)方法,这两个方法对于一般的输入操作基本上相同,不同点在于


以下几点 :



?



Actions


中的



sendKeys(keysToSend)


对于修饰键



(Modifier Keys)


的调用并不会释放,


也就是说当调用



ys(); ys(L);


ys();


的时候,相当于调用



n(keysT oSend)


,而


如果在现实的应用中想要模拟按下并且释放这 些修饰键,应该再调用



ys()


来完成这个动作。



?



其次就是当



Actions




sendKeys(keysToSend)


执行完之后,< /p>


焦点就不在当前元素了。



以我们可以使 用



sendKeys()


来切换元 素的焦点,从而达到选择元素的作用,这


个最常用到的场景就是在用户名和密码的输入过 程中。



?



第三点,




WebDriver


中,


我们可以使用



WebElement


类的



sendKeys(keysToSend)



上传附件,


比如



ys(“ C:


testuploadfilet


”);


这个操作将





传到


服务器


,但是使用:



Actions action = New Actions(driver);



ys(elemen t,“C



testupload


”) ;



(element).sendKeys(“C



testupload


”);



这种方式是上传不成功的,虽然



WebDriver


在执行这条语句的时候不会出错,但是实 际上


并没有将文件上传。所以要上传文件,还是应该使用前面一种方式。



2.


对于修饰键(


Modifier keys


),一般都是跟普通键组合使用的。比如


< p>
Ctrl+a



Alt+F4



Shift+Ctrl+F


等等。



?



这里先解释一下修饰键的概念,


修饰键是键盘上的一个或者一组 特别的键,


当它与一般按键


同时使用的时候,

< br>用来临时改变一般键盘的普通行为。


对于单独按下修饰键本身一般不会触


发任何键盘事件。


在个人计算机上的键盘上,


有 以下几个修饰键:


Shift



Ctr l



Alt(Option)



AltGr



Windows logo



Command



FN(Function)


。但是在



WebDriver


中,一般的修饰键


指前面三个。你可以点击下面的



Wiki


链接去了解更多有关修饰键的信息,


Modifier key




?



回到上面的话题,在



WebDriver


中对于修饰键的使用需要用到



Key Down(theKey)



keyUp(theKey)


方法来操作。



清单



9.


修饰键方法



KeyDown(the Key)



keyUp(theKey)


Actions action = new Actions(driver);


n(L);//


按下


Ctrl




n();//


按下


Shift




n();//


按下


Alt




(L);//


释放


Ctrl




();//


释放


Shift




();//


释放


Alt




所以要通过



Alt+F4


来关闭当前的活动窗口,可以通过下面语句来实现:


n().keyDo wn(Keys.F4).keyUp().perform();


而如果是对于像键盘上面的字母键



a,b,c,d...


等的组合使用,可以通过以下语句实




:n(L).sednKeys(“a”).perform();




WebDriver API


中,


KeyDown(Keys theKey)



KeyUp(Keys theKey) < /p>


方法的参数只能是


修饰键:






L,


否者将抛出



IllegalArgumentException


异常。



其次对于



n(theKey)


方法的调用,如果没有显示的调用



(theKey)


或者



ys()


来释放的话,这个按键将一直


保持按住状态。



使用



Robot


类来操作



Keys


没有枚举出来的按键操作



1.




WebDriver


中,


Keys


枚举出了键盘上大多数的非字母类按键,从



F1




F10



NUMPAD0




NUMPAD9

< br>、


ALTTABCTRLSHIFT


等等,


你可以通过以下链接查看



Keys


枚举出来的所有按键,


Enum Keys




但是并没有列出键盘上的所有按键,比如字母键



a



b


< br>c



d … z


,一些符号键比如:


? {}



[] ?



?



?



?



?



? ? ?



?



?



? + ?



?


-


?



? = ?


、、


?“”?


,还


有一些不常用到的 功能键如



PrtSc



ScrLk/NmLk


。对于字母键和符号键,前面我们已经提


到可以直接使用



sendKeys(“a”)



sendKeys(“/”)


的方式来 触发这些键盘事件。而对于一些


功能组合键,如



Fn + NmLk


来关闭或者打开数字键,或者



Alt+PrtSC


来抓取当前屏幕的


活动窗口并保存到图片,通过



WebDriver




Keys


是没办法操作的。



这个时候我们就需


要用到



Java




Robot


类来实现对这类组合键的操作了。



2.


下面就以对



Alt+PrtSc


为例介绍一下



Robot


对键盘的操作。如代码清单



10




清单



10.


通过



Robot


发出组合键动作



/**


*


* @Description:


这个方法用来模拟发送组合键


Alt + PrtSc, < /p>


当组合键盘事件执行之后,屏幕上


的活动窗口


*


就被截取并且存储在剪切板了。



接下来就是通过读取剪切板数据转换成


Image


图像对象并保存到本


地。



* @param filename




要保存的图像的名称



*/


public static void sendComposeKeys(String fileName) throws Exception {





虚拟键码



ss(_ALT);








//


按下


PrtSC




ss(_PRINTSCREEN);


//


释放键盘动作,当这个动作完成之后,模拟组合键


Alt + PrtSC


的过程就





//


构建


Robot


对象,用来操作键盘



Robot robot = new Robot();


//


模拟按下键盘动作,这里通过使用


KeyEvent


类来获取对应键盘(


ALT


)的


已经完成,



//


此时屏幕 活动窗口就一被截取并存入到剪切板







ease(_ALT);


//


获取系统剪切板实例



Clipboard sysc = aultToolkit().getSystemClipboard();

-


-


-


-


-


-


-


-



本文更新与2021-02-28 05:42,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/679025.html

总结Selenium WebDriver中一些鼠标和键盘事件的使用的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文