测试人员在进行软件测试时,常需要模拟键盘或鼠标的操作,用测试代码实现模拟键盘或鼠标操作时,一般使用Python的ActionChains和Java的Actions来处理。
模拟鼠标的操作包括单击、双击、拖动等。测试程序中使用ActionChains或者Actions方法,实现模拟鼠标的操作。具体应用是,可以先将(单击、双击、拖动等)一些列动作按操作顺序存入队列。此时还没有触发执行上模拟鼠标的操作。程序想要触发执行上模拟鼠标的操作,需要调用ActionChains或者Actions方法下的perform()方法。perform()方法队列中的事件会一次执行上述操作。
1.引入依赖
我们使用ActionChains或者Actions方法时,需要先导入相对应的依赖,如下的Python版和Java版代码所示。
- Python版本
#引入依赖
from selenium.webdriver import ActionChains
- Java版本
import org.openqa.selenium.interactions.Actions;
2实战演练
(1)点击操作演示
下面代码中,action用以模拟键盘或鼠标的实例对象,on_element用以传递一个元素,默认值为None。
模拟键盘或鼠标操作时,如果在on_element中指定元素时,模拟操作时会单击指定位置的元素;如果不指定,模拟操作时会单击当前光标的位置。
- Python版本
action.click(on_element=None)
- Java版本
Actions action = new Action(webdriver);
action.click(on_elenium=None);
用鼠标模拟长按某个元素的操作代码如下(Python版和Java版)。
- Python版本
action.click_and_hold(on_element=None)
- Java版本
Actions action = new Actions(webdriver);
action.clickAndHold(on_element=None);
用鼠标模拟执行右键操作的代码如下(Python版和Java版)
- Python版本
action.context_click(on_element=None)
- Java版本
Actions action = new Actions(webdriver);
action.contextClick(on_element=None)
用鼠标模拟执行左键双击的代码如下(Python版和Java版)
- Python版本
action.double_click(on_element=None)
- Java版本
Actions action = new Actions(webdriver);
action.doubleClick(on_element=None);
模拟用鼠标拖曳起始的元素到目标元素的操作的代码如下(Python版和Java版)。
注:程序中的source代表起始元素,target代表目标元素。
- Python版本
action.drag_and_drop(source,target)
- Java版本
Actions action = new Actions(webdriver);
action.dragAndDrop(WebElement source,WebElement target);
模拟用鼠标将目标拖动到指定的位置的操作代码如下(Python版和Java版)。
- Python版本
# xoffset 和 yoffset 是相对于source左上角为原点的偏移量
action.drag_and_drop_by_offset(source,xoffset,yoffset)
- Java版本
Actions action = new Actions(webdriver);
action.dragAndDropBy(WebElement source,int xoffset,int yoffset);
(2)按键操作的演示
我们编程中使用key_down()或者keyDown()方法可以模拟某些组合键事件,如按下Ctrl+C组合键,如下是Python版和Java版演示代码。
- Python版本
action.key_down(value,element=None)
- Java版本
Action action = new Action(webdriver);
action.keyDown(element,value);
我们编程中使用key_up()或者keyUp()方法模拟松开键盘中某个按键,如按下Ctrl+C组合键并且释放,如下是Python版和Java版演示代码。
- Python版本
ActionChains(driver).key_down(Keys.CONTROL\
.send_keys('c').key_up(keys.CONTROL).perform())
- Java版本
Actions action = new Actions(webdriver);
action.keyDown(keys.CONTROL).sendkeys("c").keysUp(keys.CONTROL).perform();
(3)移动光标操作的演示
把光标移动到某一个位置,需要用两个坐标标识起始和目标的位置,演示代码如下(Python版和Java版)。
- Python版本
# xoffset 和 yoffset 是相对于网页左上角的偏移量
action.move_by_offset(xoffset,yoffset)
- Java版本
Actions action = new Actions(webdriver);
action.moveByoffset(xoffset,yoffset);
将鼠标指针移动到指定元素的位置,演示代码如下(Python版和Java版)。
- Python版本
action.move_to_element(to_element)
- Java版本
Actions action = new Actions(webdriver);
action.moveToElement(to_element);
移动鼠标光标到相对于某个元素的便宜位置,演示代码如下(Python版和Java版)
- Python版本
# xoffset 和 yoffset 是相对于网页窗口显示左上角的偏移量
action.moveToElement(to_element);
- Java版本
Action action = new Actions(webdriver);
action.moveToElement(to_element,xoffset,yoffset);
(4)其他的操作
1)执行ActionChains中的操作
前面介绍的方法会将所有操作按顺序存入列队,要执行这些操作,需要调用perform()方法,演示代码如下(Python版和Java版)。
- Python版本
action.move_to_element_with_offset(to_element,xoffset,yoffset).perform()
- Java版本
Actions action = new Actions(webdriver);
Action.moveToElement(to_element,int xoffset,int yoffset).perform();
2)释放按下鼠标键的操作,演示代码如下(Python版和Java版)。
- Python版本
Actions action = new Actions(webdriver);
action.release(on_element=None)
3)向焦点元素位置输入值
焦点元素就是,我们使用Tab键移动光标时,那些被选中的元素。向焦点元素位置输入值的演示代码如下(Python版和Java版)。
- Python版本
action.send_keys(*keys_to_send)
- Java版本
Actions action = new Actions(webDriver);
Action.sendkeys(*keys_to_send)
4)向指向的元素输入数据,演示代码如下(Python版和Java版)。
- Python版本
Action.send_keys_to_element(element,*keys_to_send)
- Java版本
Actions action = new Actions(webDriver);
action.sendkeys(element,krys_to_send);
最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】
全套资料获取方式:点击下方小卡片自行领取即可