自动化测试时,有些元素不适合直接点击或者进行某些操作时,可以使用Selenium的Actions类来模拟鼠标键盘操作,通过Actions对象可以发起鼠标左键、右键、移动鼠标等操作,最后使用perform方法执行操作。
actions.clickAndHold(onElement).moveToElement(toElement).release().build().perform();
//鼠标操作
chromeDriver.get("http://www.treejs.cn/v3/demo/cn/exedit/drag.html");
WebElement sourceElement = chromeDriver,findElement (By,id("treeDemo 2 span"));
WebElement targetElement = chromeDriver,findElement (By,id("treeDemo 3 span"));
//实例化actions对象,鼠标的相关操作
Actions actions =new Actions(chromeDriver);
actions.clickAndHold(sourceElement).moveToElement (targetElement) .release() .build().perform();
基本的鼠标点击操作:
使用Actions
类的click()
方法来模拟鼠标点击。
WebDriver driver = new ChromeDriver();
driver.get("http://example.com");
WebElement element = driver.findElement(By.id("some-id"));
Actions actions = new Actions(driver);
actions.click(element).perform();
鼠标悬停(Hover):
使用moveToElement()
方法来模拟鼠标悬停在某个元素上。
actions.moveToElement(element).perform();
双击操作:
使用doubleClick()
方法来模拟鼠标双击。
actions.doubleClick(element).perform();
右键点击(上下文点击):
使用contextClick()
方法来模拟鼠标右键点击。
actions.contextClick(element).perform();
拖放操作:
使用dragAndDrop()
方法来模拟拖放操作。
WebElement source = driver.findElement(By.id("source-id"));
WebElement target = driver.findElement(By.id("target-id"));
actions.dragAndDrop(source, target).perform();
鼠标移动到特定坐标:
使用moveByOffset()
方法来模拟鼠标移动到相对于当前位置的特定坐标。
actions.moveByOffset(xOffset, yOffset).perform();
组合操作:
你可以将多个操作组合在一起,然后一次性执行。
actions.moveToElement(element)
.click()
.moveToElement(anotherElement)
.doubleClick()
.perform();
释放鼠标按钮:
如果你需要模拟按下鼠标按钮并移动到另一个位置然后释放,可以使用clickAndHold()
和release()
方法。
WebElement source = driver.findElement(By.id("source-id"));
WebElement target = driver.findElement(By.id("target-id"));
actions.clickAndHold(source)
.moveToElement(target)
.release(target)
.perform();