selenium使用robot对象操作键盘

本文介绍了如何利用selenium结合java的Toolkit类操作本地键盘,通过Toolkit.getDefaultToolkit().getSystemClipboard()获取系统剪切板,并展示了在网页元素定位及点击上的应用,以实现自动化测试中的键盘输入模拟。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//通过Robot对象完成按键操作
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;

public class RobotTest {
	WebDriver driver;
	String url="https://www.baidu.com";
  @Test
  public void TestDemo() throws InterruptedException {
	  driver.get(url);
	  WebDriverWait wait = new WebDriverWait(driver,10);
	  //显式等待
	  wait.until(ExpectedConditions.presenceOfElementLocated(By.id("kw")));
	  driver.findElement(By.id("kw")).click();
	  setAndctrlVClipboardData("selenium");
	  pressTabKey();
	  pressEnterKey();
	  Thread.sleep(3000);
	  	  
  }
  @BeforeMethod
  public void beforeMethod() {
	  driver = new FirefoxDriver();
  }

 @AfterMethod
  public void afterMethod() {
	  driver.quit();
  }

  
  
  public void setAndctrlVClipboardData(String string)
  {
	  StringSelection stringSelection = new StringSelection(string);
	  //使用Toolkit对象的setContents将字符串放到剪切板中
	  Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
	  Robot robot = null;
	  try{
		  robot = new Robot();
	  }catch(AWTException e1){
		  e1.printStackTrace();
	  }
	  
	  robot.keyPress(KeyEvent.VK_CONTROL);
	  robot.keyPress(KeyEvent.VK_V);
	  robot.keyRelease(KeyEvent.VK_V);
	  robot.keyRelease(KeyEvent.VK_CONTROL);	  
  }
  
  public void pressTabKey()
  {
	  Robot robot = null;
	  try{
		  robot = new Robot();
	  }catch(AWTException e1){
		  e1.printStackTrace();
	  }	  
	  robot.keyPress(KeyEvent.VK_TAB);
	  robot.keyRelease(KeyEvent.VK_TAB);	  
  }
  
  public void pressEnterKey()
  {
	  Robot robot = null;
	  try{
		  robot = new Robot();
	  }catch(AWTException e1){
		  e1.printStackTrace();
	  }	  
	  robot.keyPress(KeyEvent.VK_ENTER);
	  robot.keyRelease(KeyEvent.VK_ENTER);	  
	  
  }
}
Toolkit类将各种组件与本机工具包绑定起来,Toolkit.getDefaultToolkit();是其最常用的方法,返回默认工具包,提供对本地最底层的java操作。
Toolkit.getDefaultToolkit().getSystemClipboard()获取系统剪切板

wait.until(ExpectedConditions.presenceOfElementLocated(By.id("kw")));
driver.findElement(By.id("kw")).click();

一开始漏了这个点击事件,粘贴板粘贴selenium到地址栏……


运行结果如下:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值