博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium WebDriver如何模拟复制和粘贴
阅读量:5915 次
发布时间:2019-06-19

本文共 2954 字,大约阅读时间需要 9 分钟。

以最简单的例子来说明,我们需要在bing搜索引擎中,输入并查询“Selenium自动化测试”几个字。可以很快就写出如下代码:

String queryString = "Selenium自动化测试";WebElement element = driver.findElement(By.xpath("//input[@id='sb_form_q']"));// 直接输入查询字符串element.sendKeys(queryString);// 点击查询按钮driver.findElement(By.xpath("//input[@id='sb_form_go']")).click();// 截图函数captureScreenshot("截图测试JUnit");

但是如果我们想把当前的粘贴板Clipboard中的数据粘贴到bing的搜索输入框,该怎么办呢?Selnium是否支持从从粘贴板中粘贴数据呢?答案是肯定的,直接上代码,代码很简单,并且有注释,不再进行解释。

import java.awt.*;import java.awt.datatransfer.StringSelection;import java.awt.event.KeyEvent;import java.io.*;import java.util.concurrent.TimeUnit;import org.junit.*;import org.openqa.selenium.*;import org.openqa.selenium.chrome.*;import com.thoughtworks.selenium.SeleneseTestBase; public class SearchChineseCharacters extends SeleneseTestBase {  private static WebDriver driver;  static final int MAX_TIMEOUT_IN_SECONDS = 5;   @BeforeClass  public static void setUpBeforeClass() throws Exception {    System.setProperty("webdriver.chrome.driver",        System.getProperty("user.dir") + File.separator            + "chromedriver.exe");    driver = new ChromeDriver();    String url = "http://cn.bing.com/";    driver.manage().window().maximize();    driver.manage().timeouts()        .implicitlyWait(MAX_TIMEOUT_IN_SECONDS, TimeUnit.SECONDS);    driver.get(url);  }   @AfterClass  public static void tearDownAfterClass() throws Exception {    if (driver != null) {      System.out.println("运行结束!");      driver.quit();    }  }   @Test  public void test() {    String queryString = "Selenium自动化测试";    WebElement element = driver.findElement(By        .xpath("//input[@id='sb_form_q']"));    // 直接输入查询字符串    // element.sendKeys(queryString);     // 下面的语句模拟复制粘贴功能、copy & paste    // 向粘贴板中存放数据,还可以注释掉下面的语句,进行手工复制一些东西到粘贴板    setClipboardData(queryString);    // 模拟Ctrl+V,进行粘贴    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);    // 点击查询按钮    driver.findElement(By.xpath("//input[@id='sb_form_go']")).click();    // 截图函数    captureScreenshot("截图测试JUnit");   }   private void captureScreenshot(String fileName) {    String imagePath = System.getProperty("user.dir") + File.separator        + fileName + ".png";    try {      byte[] decodedScreenshot = ((TakesScreenshot) driver)          .getScreenshotAs(OutputType.BYTES);      FileOutputStream fos = new FileOutputStream(new File(imagePath));      fos.write(decodedScreenshot);      fos.close();      System.out.println("截图保存至" + imagePath);    } catch (Exception e) {      e.printStackTrace();    }  }   public static void setClipboardData(String string) {    StringSelection stringSelection = new StringSelection(string);    Toolkit.getDefaultToolkit().getSystemClipboard()        .setContents(stringSelection, null);  }}

 

使用场景: 1.上传文件, 2.富文本框都行

转载地址:http://eagpx.baihongyu.com/

你可能感兴趣的文章
Oracle system identifier(SID) "xxx" alread exits. Specify another SID
查看>>
C++map类型
查看>>
nasm预处理器(1)
查看>>
初识三层结构
查看>>
linux下64位汇编的系统调用(2)
查看>>
[置顶]C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子)
查看>>
《Ext JS 4 First Look》翻译之五:Grid、Tree和Form   
查看>>
ACM--string常见用法
查看>>
Cloud Card能否干掉App
查看>>
resource net/sf/antcontrib/antlib.xml. It could not be found.
查看>>
《走进git时代系列三》详解部分git思想及SVN/GIT命令对比解析
查看>>
NoSQL之Redis(二)---Java操作Redis存储自定义类型数据
查看>>
AppStore审核被拒绝?看看问题出在哪儿
查看>>
6.5英寸的iPhone和5.8英寸的iPhone截屏无法在正确的设备帧中显示应用程序(Specifically, your 6.5-inch iPhone )...
查看>>
程序员写简历时必须注意的技术词汇拼写(持续更新...)
查看>>
JS中判断对象是不是数组的方法
查看>>
微信小程序苹果手机上下拉刷新,回弹时页面越界问题
查看>>
这个是网上下载的一个input模糊搜索 (L01)
查看>>
Grails集成Quartz插件实现定时任务(Job)
查看>>
缓存+事务 使用问题
查看>>