2015-07-04 18:05 編寫本文java
TeamCity編譯selenium腳本,對於上傳窗口處理只支持sendKeys的使用,不支持模擬人爲按下Enter鍵和使用autoIt等操做,即便本地調試經過的腳本,提交編譯執行後,也是報錯,緣由是teamCity編譯執行腳本的過程當中,只是後臺啓動相應瀏覽器的driver,和瀏覽器對應的進程,沒有和人爲操做同樣的真實在前臺打開一個瀏覽器界面致使的。發現這個缺陷還得從編寫上傳課件測試用例腳本提及。api
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("上傳課件成功!"));//判斷是否有上傳課件成功提示字符串