标签:
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