一, Actions 介绍
1,简介
- 用于向浏览器设备输入动作 。
2,键盘
(1)键盘操作

(2)键盘操作处理方法

(3)代码示例
package action;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.interactions.Actions;
import java.time.Duration;
import java.util.Set;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
public class ActionTest {
static WebDriver driver;
@BeforeAll
static void setupClass() {
ChromeOptions options = new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
//创建一个driver对象
driver = new ChromeDriver(options);
//声明隐式等待
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(6));
}
@AfterAll
static void tearDownClass() throws InterruptedException {
Thread.sleep(5000);
driver.quit();
}
@Test
void enterKey(){
driver.get("https://vip.ceshiren.com/#/ui_study/keypress");
//定位输入框
WebElement element = driver.findElement(By.className("el-input__inner"));
//开始鼠标键盘的操作,输入文本并在键盘上点击回车按键
Actions actions = new Actions(driver);
actions.sendKeys(element, "霍格沃兹")
.sendKeys(Keys.ENTER).build().perform();
//查找输入后键盘操作的结果
WebElement result = driver.findElement(By.className("mb-2"));
String text = result.getText();
assertThat(text,containsString("霍格沃兹"));
}
@Test
void commandsWithClick(){
driver.get("https://ceshiren.com/");
//定位第一个帖子
WebElement firstElement = driver.findElement(By.xpath("//*[@role='heading']"));
String firstElementText = firstElement.getText();
System.out.println("帖子的内容为:" + firstElementText);
//获取当前窗口
String originHandle = driver.getWindowHandle();
//开始鼠标键盘的操作
Actions actions = new Actions(driver);
//在定位帖子上,按下键盘的command键,然后放开command键,即可在新页面打开帖子
actions.keyDown(Keys.COMMAND).click(firstElement)
.keyUp(Keys.COMMAND).build().perform();
//获取所有窗口,并切换到新窗口
Set<String> windowHandles = driver.getWindowHandles();
for (String handle : windowHandles) {
if(!handle.equals(originHandle)){
driver.switchTo().window(handle);
break;
}
}
//获取新窗口标题
String title = driver.getTitle();
System.out.println("新窗口的标题为:" + title);
assertThat(title,containsString(firstElementText));
}
}
3,鼠标
(1)鼠标操作

(2)鼠标操作处理方法
(3)代码示例
//鼠标点击操作
@Test
void mouseAction(){
driver.get("https://vip.ceshiren.com/#/ui_study/clicks");
//定位点击鼠标后的文本信息
WebElement text = driver.findElement(By.className("mb-2"));
//定位单击按钮并操作鼠标点击
WebElement oneClick = driver.findElement(By.id("click"));
Actions actions = new Actions(driver);
actions.click(oneClick).perform();
String clickText = text.getText();
System.out.println("点击单击按钮后的文本信息:" + clickText);
executableList.add(() -> assertThat(clickText,containsString("单击按钮")));
//定位双击按钮并操作鼠标点击
WebElement dbClick = driver.findElement(By.id("dblclick"));
actions.doubleClick(dbClick).perform();
String dbClickText = text.getText();
System.out.println("点击双击按钮后的文本信息:" + dbClickText);
executableList.add(() -> assertThat(dbClickText,containsString("双击按钮")));
//定位右键单击按钮并操作鼠标点击
WebElement rigthClick = driver.findElement(By.id("rightClick"));
actions.contextClick(rigthClick).perform();
String rightClickText = text.getText();
System.out.println("点击右键单击按钮后的文本信息:" + rightClickText);
executableList.add(() -> assertThat(rightClickText,containsString("鼠标右键单击按钮")));
assertAll(executableList);
}
//鼠标悬停操作
@Test
void mouseOver(){
driver.get("https://vip.ceshiren.com/#/ui_study/mouseover");
//定位点击鼠标后的文本信息
WebElement text = driver.findElement(By.className("mb-2"));
//定位悬停按钮
WebElement oneClick = driver.findElement(By.xpath("//*[text()='鼠标移入']"));
//进行鼠标悬停操作
Actions actions = new Actions(driver);
actions.moveToElement(oneClick).perform();
String moveText = text.getText();
System.out.println("鼠标悬停时的文本信息:" + moveText);
assertThat(moveText,containsString("鼠标移入"));
//切换到其他悬停按钮
WebElement otherClick = driver.findElement(By.xpath("//*[text()='其他']"));
actions.moveToElement(otherClick).perform();
String otherText = text.getText();
System.out.println("鼠标移出后的文本信息:" + otherText);
assertThat(otherText,equalTo("鼠标操作:"));
}
//鼠标拖拽操作
@Test
void mouseChains(){
driver.get("https://vip.ceshiren.com/#/ui_study/action_chains");
//需要移动拖拽的元素A
WebElement AElement = driver.findElement(By.id("item1"));
//需要移动到哪里的定位元素B
WebElement BElement = driver.findElement(By.id("item3"));
//进行鼠标拖拽操作
Actions actions = new Actions(driver);
actions.dragAndDrop(AElement, BElement).perform();
//断言
String pageSource = driver.getPageSource();
assertThat(pageSource,containsString("验证通过"));
}