4

4.1 鼠标操作

1). 鼠标左键点击

Actions action = new Actions(driver);action.click();// 鼠标左键在当前停留的位置做单击操作 
action.click(driver.findElement(By.name(element)))// 鼠标左键点击指定的元素
actionClick.perform();        //perform时才会触发动作

2). 鼠标右键点击

Actions action = new Actions(driver); 
 action.contextClick();// 鼠标右键在当前停留的位置做单击操作 
action.contextClick(driver.findElement(By.name(element)))// 鼠标右键点击指定的元素

3). 鼠标双击

Actions action = new Actions(driver); 
action.doubleClick();// 鼠标在当前停留的位置做双击操作 
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.dragAndDropBy(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 元素的位置

6). 鼠标移动操作

Actions action = new Actions(driver); 
 action.moveToElement(toElement);// 将鼠标移到 toElement 元素中点
// 将鼠标移到元素 toElement 的 (xOffset, yOffset) 位置,
//这里的 (xOffset, yOffset) 是以元素 toElement 的左上角为 (0,0) 开始的 (x, y) 坐标轴。
 action.moveToElement(toElement,xOffset,yOffset)
// 以鼠标当前位置或者 (0,0) 为中心开始移动到 (xOffset, yOffset) 坐标轴
 action.moveByOffset(xOffset,yOffset);

7). 释放鼠标

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

4.2 键盘操作

4.2.1 普通键-sendkeys

Actions action = new Actions(driver); 
 action.sendKeys(Keys.TAB);// 模拟按下并释放 TAB 键
 action.sendKeys(Keys.SPACE);// 模拟按下并释放空格键
/***
针对某个元素发出某个键盘的按键操作,或者是输入操作,
比如在 input 框中输入某个字符也可以使用这个方法。这个方法也可以拆分成:
action.click(element).sendKeys(keysToSend)。
*/
 action.sendKeys(element,keysToSend);
//上传文件应该使用webElement元素的sendKeys方法
element.sendKeys(“C:\test\uploadfile\test.jpg”); 		//action.click会导致文件实际没有上传

4.2.2 控制键(Ctrl/Alt)-keyDown-不释放

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 键

//关闭当前页面
action.keyDown(Keys.ALT).keyDown(Keys.F4).keyUp(Keys.ALT).perform();
//组合键 Ctrl+a
action.keyDown(Keys.CONTROL).sednKeys(“a”).perform();

4.3 批量上传文件

public void test_mutilUploadFile() throws Exception { 
		System.out.println("upload start"); 
        // 获取上传控件元素
		WebElement uploadButton = driver.findElement(By.name("html5uploader")); 
		// 构建上传文件路径,将需要上传的文件添加到 CharSequence 数组
		CharSequence[] files = new CharSequence[5]; 
        files[0] = "C:\test\test1.txt"; 
        files[1] = "C:\test\test2.txt"; 
        files[2] = "C:\test\test3.txt"; 
        files[3] = "C:\test\test4.txt"; 
        files[4] = "C:\test\test5.txt"; 
        // 循环列出每支需要上传的文件路径,做单一上传动作
        for(CharSequence file: files){ 
			uploadButton.sendKeys(file); 
        } 
        Thread.sleep(2000); 
		System.out.println("upload end"); 
    }
原文地址:https://www.cnblogs.com/Desneo/p/7345710.html