标签:
鼠标事件-概述
1.单击 click()、click(WebElement onElement)
2.双击 doubleClick() 、 doubleClick(WebElement onElement)
3.右击 contextClick()、 contextClick(WebElement onElement)
4.移动/悬浮 moveByOffset(int xOffset, int yOffset)、moveToElement(WebElement toElement)、moveToElement(WebElement toElement, int xOffset, int yOffset)
5.左键按下不释放 clickAndHold()、clickAndHold(WebElement onElement)
6.释放 release()、release(WebElement onElement),经常与clickAndHold相配合
7.拖动 dragAndDrop(WebElement source, WebElement target)、 dragAndDropBy(WebElement source, int xOffset, int yOffset)
键盘事件-概述
1.普通键盘操作:sendKeys(java.lang.CharSequence... keysToSend)、sendKeys(WebElement element, java.lang.CharSequence... keysToSend)
2.修饰键操作:
按下修饰键:keyDown(Keys theKey)、keyDown(WebElement element, Keys theKey)、sendKeys(keysToSend)
松开修饰键:keyUp(Keys theKey)、keyUp(WebElement element, Keys theKey)、sendKeys(Keys.NULL)
WebElement.sendKeys(CharSequence...)
执行事件
1.build():组合所有actions,生成新的actions
2.perform():执行actions,参考源码发现该方法包含build()
============================================================================================
鼠标事件-案例
1.单击 click()、click(WebElement onElement)
Actions action = new Actions(driver);
action.click().perform();// 鼠标左键在当前停留的位置做单击操作 action.click(driver.findElement(By.***)).perform();// 鼠标左键点击指定的元素
2.双击 doubleClick() 、 doubleClick(WebElement onElement)
Actions action = new Actions(driver); action.doubleClick().perform();// 鼠标在当前停留的位置做双击操作 action.doubleClick(driver.findElement(By.***)).perform();// 鼠标双击指定的元素
3.右击 contextClick()、 contextClick(WebElement onElement)
Actions action = new Actions(driver); action.contextClick().perform();// 鼠标右键在当前停留的位置做单击操作 action.contextClick(driver.findElement(By.***)).perform();// 鼠标右键点击指定的元素
4.移动/悬浮 moveByOffset(int xOffset, int yOffset)、moveToElement(WebElement toElement)、moveToElement(WebElement toElement, int xOffset, int yOffset)
Actions action = new Actions(driver); action.moveToElement(toElement).perform();// 将鼠标移到 toElement 元素中心点
action.moveToElement(toElement,xOffset,yOffset).perform();// 将鼠标移到元素 toElement 的 (xOffset, yOffset) 位置,
//这里的 (xOffset, yOffset) 是以元素 toElement 的左上角为 (0,0) 开始的 (x, y) 坐标轴。 action.moveByOffset(xOffset,yOffset).perform();// 以鼠标当前位置或者 (0,0) 为中心开始移动到 (xOffset, yOffset) 坐标轴
action.moveByOffset(xOffset,yOffset) 这里需要注意,如果 xOffset为负数,表示横坐标向左移动,yOffset 为负数表示纵坐标向上移动。而且如果这两个值大于当前屏幕的大小,鼠标只能移到屏幕最边界的位置同时抛出MoveTargetOutOfBoundsExecption 的异常。
5.左键按下不释放 clickAndHold()、clickAndHold(WebElement onElement)
Actions action = new Actions(driver); action.clickAndHold().perform();// 鼠标在当前位置点击后不释放 action.clickAndHold(onElement).perform();// 鼠标在 onElement 元素的位置点击后不释放
6.释放 release()、release(WebElement onElement),经常与clickAndHold相配合
Actions action = new Actions(driver); action.release().perform();// 释放鼠标
7.拖动 dragAndDrop(WebElement source, WebElement target)、 dragAndDropBy(WebElement source, int xOffset, int yOffset)
Actions action = new Actions(driver);
action.dragAndDrop(source,target).perform();// 将 source 元素拖放到 target 元素的位置。
action.dragAndDrop(source,xOffset,yOffset).perform();// 将 source 元素拖放到 (xOffset, yOffset) 位置,其中 xOffset 为横坐标,yOffset 为纵坐标。
拖拽动作是组合动作可以拆分实现:
Actions action = new Actions(driver);
action.clickAndHold(source).moveToElement(target).release().perform(); //选中source元素->移动到target元素位置->释放左键
action.clickAndHold(source).moveByOffset(xOffset,yOffset).release().perform(); //选中source元素->拖放到(xOffset,yOffset)位置->释放左键
键盘事件-案例
键盘的划分:
Actions action = new Actions(driver); action.sendKeys(Keys.TAB).perform();// 模拟按下并释放 TAB 键 action.sendKeys(element,Keys.SPACE).perform();// 对element输入并释放空格键--可拆分为 action.click(element).sendKeys(Keys.SPACE).perform();
Actions.sendKeys(keysToSend)和 WebElement.sendKeys(CharSequence...)区别
WebElement.sendKeys()直接释放参数
Actions action = New Actions(driver);
action.sendKeys(element,“C:\\test\\upload\\test.jpg”); 或 action.click(element).sendKeys(“C:\\test\\upload\\test.jpg”);
按下修饰键:keyDown(Keys theKey)、keyDown(WebElement element, Keys theKey)、sendKeys(keysToSend)
松开修饰键:keyUp(Keys theKey)、keyUp(WebElement element, Keys theKey)、sendKeys(Keys.NULL)
1)修饰键惯用操作:
Actions action = new Actions(driver); action.keyDown(Keys.CONTROL);// 按下 Ctrl 键 action.keyDown(Keys.SHIFT);// 按下 Shift 键 action.keyDown(Key.ALT);// 按下 Alt 键 action.keyUp(Keys.CONTROL);// 释放 Ctrl 键 action.keyUp(Keys.SHIFT);// 释放 Shift 键 action.keyUp(Keys.ALT);// 释放 Alt 键
sendKeys(keysToSend);//按下修饰键
sendKeys(Keys.NULL);//释放修饰键
2)组合件输入-案例
SHIFT+a 预期输入A
Actions action = new Actions(driver);
action.keyDown(Keys.SHIFT).sendKeys(driver.findElement(By.tagName("input")),"a").keyUp(Keys.SHIFT).perform();//按下Shift->输入a->释放Shift,结果输入A
3)输入修饰键后需要明显释放-案例
WebElement input = driver.findElement(By.tagName("input"));
Actions action = new Actions(driver); action.keyDown(Keys.SHIFT).sendKeys(input,"a").perform();//按下Shift->输入a,结果输入A ;未释放Shift
action.sendKeys(input, "b").perform();//输入大写B
WebElement input = driver.findElement(By.tagName("input"));
Actions action = new Actions(driver);
action.keyDown(Keys.SHIFT).sendKeys(input,"a").keyUp(Keys.SHIFT).perform();//按下Shift->输入a->释放Shift,结果输入A ; 已释放Shift
action.sendKeys(input, "b").perform();//输入小写b
同理,使用Actions.sendKeys(修饰键)后,需要使用sendKeys(Keys.NULL) 释放修饰键,否则修饰键一直处于被按下状态
===========================================================================================
更多参考资料:
Selenium java api http://selenium.googlecode.com/git/docs/api/java/index.html
Selenium 源码 git clone https://code.google.com/p/selenium/
标签:
原文地址:http://www.cnblogs.com/sylvia-liu/p/4224409.html