动作类 Selenium – 鼠标点击和键盘事件
在本教程中,我们将学习处理键盘和鼠标事件 Selenium 网络驱动程序
动作类 Selenium
动作类 Selenium 是 selenium 提供的用于处理键盘和鼠标事件的内置功能。它包括各种操作,例如通过控制键单击多个事件、拖放事件等等。这些来自操作类的操作是使用高级用户交互 API 执行的 Selenium 网络驱动程序。
处理键盘和鼠标事件
处理特殊的键盘和鼠标事件是使用 高级用户交互 API。 它包含 行动 和 操作 执行这些事件时需要用到的类。下面是 Actions 类提供的最常用的键盘和鼠标事件。
付款方式 | 描述 |
---|---|
点击并保持() | 单击(不释放)当前鼠标位置。 |
contextClick() | 在当前鼠标位置执行上下文单击。(右键单击鼠标操作) |
双击() | 在当前鼠标位置执行双击。 |
dragAndDrop(源,目标) | 在源元素的位置单击并按住,移动到目标元素的位置,然后释放鼠标。
参数: 源元素模拟按钮按下的情况。 目标 - 移动到并释放鼠标的元素。 |
dragAndDropBy(源,x 偏移,y 偏移) | 在源元素的位置单击并按住,按给定的偏移量移动,然后释放鼠标。
参数: 源元素模拟按钮按下的情况。 xOffset-水平移动偏移。 yOffset-垂直移动偏移。 |
keyDown(修饰键) | 按下修饰键。不释放修饰键 – 后续交互可能假定修饰键保持按下状态。
参数: modifier_key – 任意修饰键(Keys.ALT、Keys.SHIFT 或 Keys.CONTROL) |
keyUp(修饰键 _key) | 执行按键释放。
参数: modifier_key – 任意修饰键(Keys.ALT、Keys.SHIFT 或 Keys.CONTROL) |
moveByOffset(x 偏移,y 偏移) | 将鼠标从其当前位置(或 0,0)移动给定的偏移量。
参数: x-offset-水平偏移。负值表示向左移动鼠标。 y-offset-垂直偏移。负值表示将鼠标向下移动。 |
moveToElement(到元素) | 将鼠标移动到元素的中间。
参数: toElement- 要移动到的元素。 |
释放() | 在当前鼠标位置释放按下的鼠标左键 |
sendKeys(onElement,charsequence) | 将一系列击键发送到元素上。
参数: onElement – 接收按键的元素,通常是文本字段 charsequence – 表示要发送的击键序列的任意字符串值 |
在下面的例子中,我们将使用 moveToElement() 方法将鼠标悬停在一个 Mercury 旅游表的行。请参阅下面的示例。
上面显示的单元格是元素。非悬停时,其颜色为#FFC455(橙色)。悬停后,单元格颜色变为透明。它变成与整个橙色表格的蓝色背景相同的颜色。
步骤1) 导入 行动 和 操作 类。
步骤2) 实例化一个新的 Actions 对象。
步骤3) 使用步骤 2 中的 Actions 对象实例化一个 Action。
在本例中,我们将使用 moveToElement() 方法,因为我们只需将鼠标悬停在“Home”链接上。build() 方法始终是最后使用的方法,以便将列出的所有操作编译为单个步骤。
步骤4) 在执行我们在步骤3中设计的Action对象时使用perform()方法。
下面是检查背景颜色的整个 WebDriver 代码鼠标悬停之前和之后的元素。
package newproject; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.interactions.Action; import org.openqa.selenium.interactions.Actions; public class PG7 { public static void main(String[] args) { String baseUrl = "http://demo.guru99.com/test/newtours/"; System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement link_Home = driver.findElement(By.linkText("Home")); WebElement td_Home = driver .findElement(By .xpath("//html/body/div" + "/table/tbody/tr/td" + "/table/tbody/tr/td" + "/table/tbody/tr/td" + "/table/tbody/tr")); Actions builder = new Actions(driver); Action mouseOverHome = builder .moveToElement(link_Home) .build(); String bgColor = td_Home.getCssValue("background-color"); System.out.println("Before hover: " + bgColor); mouseOverHome.perform(); bgColor = td_Home.getCssValue("background-color"); System.out.println("After hover: " + bgColor); driver.close(); } }
下面的输出清楚地表明鼠标悬停后背景颜色变得透明。
构建一系列多重动作
您可以使用 Action 和 Actions 类构建一系列操作。只需记住使用 build() 方法关闭系列。请考虑下面的示例代码。
public static void main(String[] args) { String baseUrl = "http://www.facebook.com/"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement txtUsername = driver.findElement(By.id("email")); Actions builder = new Actions(driver); Action seriesOfActions = builder .moveToElement(txtUsername) .click() .keyDown(txtUsername, Keys.SHIFT) .sendKeys(txtUsername, "hello") .keyUp(txtUsername, Keys.SHIFT) .doubleClick(txtUsername) .contextClick() .build(); seriesOfActions.perform() ; }
总结
- 使用 AdvancedUserInteractions API 来处理特殊的键盘和鼠标事件。
- 常用的关键字和鼠标事件是 doubleClick()、keyUp、dragAndDropBy、contextClick 和 sendKeys。