标签:
TeamCity编译selenium脚本,对于上传窗口处理只支持sendKeys的使用,不支持模拟人为按下Enter键和使用autoIt等操作,即使本地调试通过的脚本,提交编译执行后,也是报错,原因是teamCity编译执行脚本的过程中,只是后台启动相应浏览器的driver,没有真实打开一个浏览器导致的。发现这个缺陷还得从编写上传课件测试用例脚本说起。



driver.findElement(By.id("updatePicId")). sendKeys("D:\1.jpg");//上传图片
Assert.assertTrue(driver.getPageSource().contains("上传图片成功"));//判断是否有上传图片成功提示字符串
driver.findElement(By.xpath("//ul/li[5]/div[1]/label/div/object")).click();//点击【选择】按钮
this.useSysClipboard("D:\1.mp4");//将要上传的文件路径复制到剪切板然后粘贴出来并按下Enter键
Assert.assertTrue(driver.getPageSource().contains("上传课件成功"));//判断是否有上传课件成功提示字符串
/**
* 复制数据到剪切板并粘贴出来
* @param writeMe
* @throws java.awt.AWTException
*/
public void useSysClipboard(String writeMe) throws AWTException {
Sleeper.sleepTight(800);
Robot robot=new Robot();
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
clip.setContents(new StringSelection(""), null);//清空系统剪切板
Transferable tText = new StringSelection(writeMe); //将文件路径复制到系统剪切板
clip.setContents(tText, null);
robot.keyPress(KeyEvent.VK_CONTROL);//模拟按ctrl键
robot.keyPress(KeyEvent.VK_V);//模拟按v键
Sleeper.sleepTight(500);
robot.keyRelease(KeyEvent.VK_V);//模拟释放v键
robot.keyRelease(KeyEvent.VK_CONTROL);//模拟释放ctrl键
Sleeper.sleepTight(500);
robot.keyPress(KeyEvent.VK_ENTER);//模拟按Enter键
Sleeper.sleepTight(500);
}
driver.findElement(By.xpath("//ul/li[5]/div[1]/label/div/object")).click();//点击【选择】按钮
Runtime.getRuntime().exec("d:1.exe");//执行.exe文件上传课件
Assert.assertTrue(driver.getPageSource().contains("上传课件成功!"));判断是否有上传课件成功提示字符串
driver.findElement(By.id("updatePicId")).click();//点击【上传图片】按钮
this.useSysClipboard("D:\1.jpg");//通过复制粘贴方式上传图片
Assert.assertTrue(driver.getPageSource().contains("上传图片成功"));//判断是否有上传图片成功提示字符串
driver.findElement(By.xpath("//ul/li[5]/div[1]/label/div/object")).click();//点击【选择】按钮
Runtime.getRuntime().exec("d:1.exe");//执行.exe文件上传课件
Assert.assertTrue(driver.getPageSource().contains("上传课件成功!"));//判断是否有上传课件成功提示字符串
标签:
原文地址:http://www.cnblogs.com/xxyBlogs/p/4621053.html