public class Demo1 { WebDriver driver; @BeforeMethod public void visit(){ //webdriver對象的聲明 System.setProperty("webdriver.chrome.driver", "e:\\chromedriver.exe"); driver = new ChromeDriver(); } //頁面操做,返回上一個頁面,前進,刷新 @Test public void VisitRecentUrl(){ String url1 = "http://www.baidu.com"; String url2 = "http://www.sina.com"; driver.navigate().to(url1); driver.navigate().to(url2); driver.navigate().back();//返回到上一個頁面 driver.navigate().forward();//前進到下一頁面 driver.navigate().refresh();//刷新當前頁面 driver.close(); } //操做瀏覽器窗口 @Test public void operateBrower(){ //設置瀏覽器的橫縱座標 Point point = new Point(150, 150); //設置瀏覽器的寬高 Dimension dimension = new Dimension(500, 500); driver.manage().window().setPosition(point); driver.manage().window().setSize(dimension); System.out.println(driver.manage().window().getPosition()); System.out.println(driver.manage().window().getSize()); driver.manage().window().maximize();//窗口最大化 driver.get("http//www.baidu.com"); driver.close(); } //獲取頁面的title屬性 @Test public void getTitle(){ driver.get("http://www.baidu.com"); String title = driver.getTitle(); System.out.println(title); Assert.assertEquals("百度一下,你就知道", title); driver.close(); } //獲取頁面的URL @Test public void getCurrentUrl(){ driver.get("http://www.baidu.com"); String currentUrl = driver.getCurrentUrl(); System.out.println(currentUrl); driver.close(); } //清除文本框中的內容 //在文本框中輸入指定內容 @Test public void clearText() throws InterruptedException{ driver.get("file:///F:/workspace/selenium_day01/text.html"); WebElement input = driver.findElement(By.id("text")); Thread.sleep(2000); input.clear(); //清除文本框中的內容 try { Thread.sleep(3000); } catch (Exception e) { e.printStackTrace(); } input.sendKeys("selenium自動化測試");//在文本框中輸入指定內容 try { Thread.sleep(3000); } catch (Exception e) { e.printStackTrace(); } driver.close(); } //單擊按鈕 @Test public void clickButton(){ driver.get("file:///F:/workspace/selenium_day01/text.html"); try { Thread.sleep(3000); } catch (Exception e) { e.printStackTrace(); } WebElement button = driver.findElement(By.id("button")); button.click();//單擊按鈕 driver.close(); } //鼠標雙擊元素 @Test public void doubleClick(){ driver.get("file:///F:/workspace/selenium_day01/text.html"); WebElement inputBox = driver.findElement(By.id("inputBox")); //聲明Action對象 Actions builder = new Actions(driver); builder.doubleClick(inputBox).build().perform(); driver.close(); } //操做單選下拉列表 @Test public void operateDropList(){ driver.get("file:///F:/workspace/selenium_day01/text.html"); WebElement element = driver.findElement(By.name("fruit")); Select dropList = new Select(element); //判斷下拉列表是否可多選 Assert.assertFalse(dropList.isMultiple()); //斷言當前選中的選項文本是否爲桃子 Assert.assertEquals("桃子", dropList.getFirstSelectedOption().getText()); //選中下拉列表中的第2個選項 dropList.selectByIndex(1); Assert.assertEquals("橘子", dropList.getFirstSelectedOption().getText()); //使用下拉列表選項的value屬性值來選中操做 dropList.selectByValue("lizhi"); Assert.assertEquals("荔枝", dropList.getFirstSelectedOption().getText()); //經過選項的文字來進行操做 dropList.selectByVisibleText("山楂"); Assert.assertEquals("山楂", dropList.getFirstSelectedOption().getText()); } //檢查單選列表的選項文字是否條預期 @Test public void checkSelectText(){ driver.get("file:///F:/workspace/selenium_day01/text.html"); WebElement element =driver.findElement(By.name("fruit")); Select dropList = new Select(element); //將下拉列表中指望出現的選項文字存在list集合中,Arrays.asList 將數組轉換爲list對象 String[] arr = {"桃子","橘子","荔枝","山楂"}; List<String> expect_option = Arrays.asList(arr); //聲明一個新的list,用於存取從頁面上獲取的全部選 項文字 List<String> act_option = new ArrayList<>(); for(WebElement option : dropList.getOptions()){ act_option.add(option.getText()); //斷言預期對象與實際對象是否徹底一致 Assert.assertEquals(expect_option.toArray(), act_option.toArray()); } } //操做多選的選擇列表 @Test public void opertMultiple(){ driver.get("file:///F:/workspace/selenium_day01/text.html"); //找到頁面的下拉列表元素 WebElement element =driver.findElement(By.name("fruit2")); Select dropList = new Select(element); //判斷下拉列表是否支持多選,支持多選isMultiple返回true Assert.assertTrue(dropList.isMultiple()); //使用選擇索引選擇橘子選項 dropList.selectByIndex(1); //使用選擇value屬性選擇荔枝選項 dropList.selectByValue("lizhi"); //使用選項文字選擇山楂 dropList.selectByVisibleText("山楂"); //取消全部選項的選中狀態 dropList.deselectAll(); //再次選中3個數據 dropList.selectByIndex(1); dropList.selectByValue("lizhi"); dropList.selectByVisibleText("山楂"); //取消索引爲1的選項 dropList.deselectByIndex(1); //取消value屬性爲lizhi的選項 dropList.deselectByValue("lizhi"); //取消選項文字爲山楂的選項 dropList.deselectByVisibleText("山楂"); driver.close(); } //操做單選框 @Test public void operateRadio(){ driver.get("file:///F:/workspace/selenium_day01/text.html"); //查找屬性值爲chengming的單選按鈕對象 WebElement element = driver.findElement(By.xpath("//input[@value='chengming']")); //若是這個單選項未被選中,則執行click()方法選中這個按鈕 if(!element.isSelected()){ element.click(); } //斷言屬性值爲chengming的單選按鈕是否處於選中狀態 Assert.assertTrue(element.isSelected()); //查找name屬性值爲username的全部對象 List<WebElement> elements = driver.findElements(By.name("username")); //查找value屬性爲lisi的單選按鈕對象,若是處於未選中狀態,則執行click方法選中 for(WebElement element2 : elements){ if(element2.getAttribute("value").equals("lisi")){ if(!element2.isSelected()){ element2.click(); //斷言單選按鈕是否被選中 Assert.assertTrue(element2.isSelected()); //成功選中後,退出 break; } } } } //操做複選框 @Test public void operateCheckBox() throws Exception{ driver.get("file:///F:/workspace/selenium_day01/text.html"); //查找屬性爲汽車的複選框元素 WebElement element = driver.findElement(By.xpath("//input[@value='bus']")); //若是複選框未選中,則選中 if(!element.isSelected()){ element.click(); } Assert.assertTrue(element.isSelected()); //若是複選框被選中,則取消選中 /*if(element.isSelected()){ element.click(); } Assert.assertTrue(element.isSelected());*/ //查找屬性爲fruit3的元素,並選中 List<WebElement> list = driver.findElements(By.name("fruit3")); for(WebElement checkbox : list){ checkbox.click(); } Thread.sleep(1000); driver.close(); } //將當前瀏覽器窗口截屏 @Test public void screen(){ driver.get("http://www.baidu.com"); File file = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); try { FileUtils.copyFile(file, new File("e:/testing/test.png")); } catch (IOException e) { e.printStackTrace(); } } //檢查頁面元素內容是否出現 @Test public void isElementText(){ //判斷p標籤內容與selenium自動化測試是否徹底匹配 driver.get("file:///F:/workspace/selenium_day01/text.html"); WebElement element = driver.findElement(By.xpath("//p[1]")); String text = element.getText(); System.out.println("》》》》》 "+text); Assert.assertEquals("selenium自動化測試1", text); } //執行javascript腳本 @Test public void executeJavaScript(){ driver.get("http:www.baidu.com"); //聲明一個JavaScript執行對象 JavascriptExecutor js = (JavascriptExecutor) driver; String title = (String) js.executeScript("return document.title"); //System.out.println("expected"+title); Assert.assertEquals("百度一下,你就知道", title); //String bottonText = (String) js.executeScript("var button = document.getElementById('su').type='hidden';"); String bottonText = (String) js.executeScript("var button = document.getElementById('su');return button.value"); System.out.println("》》》》》》"+bottonText); Assert.assertEquals("百度一下", bottonText); driver.close(); } }
public class Demo2 { WebDriver driver; @BeforeMethod public void Visitor(){ System.setProperty("webdriver.chrome.driver", "e:\\chromedriver.exe"); driver = new ChromeDriver(); } //模擬鍵盤的操做 @Test public void clickKeys(){ driver.get("http://www.baidu.com"); Actions action = new Actions(driver); action.keyDown(Keys.CONTROL);//按下ctrl鍵 action.keyDown(Keys.SHIFT);//按下shift鍵 action.keyDown(Keys.ALT);//按下alt鍵 action.keyUp(Keys.CONTROL);//釋放ctrl鍵 action.keyUp(Keys.SHIFT);//釋放shift鍵 action.keyUp(Keys.ALT);//釋放alt鍵 //模擬鍵盤在輸入框中輸入TEST action.keyDown(Keys.SHIFT).sendKeys("test").perform(); } //模擬鼠標右擊事件 @Test public void rightClickMouse(){ driver.get("http://www.baidu.com"); Actions action = new Actions(driver); //模擬鼠標右擊事件 action.contextClick(driver.findElement(By.id("su"))).perform(); driver.close(); } //在指定元素上方進行鼠標懸浮,及點擊懸浮後出現的菜單 @Test public void roverOnElement() throws Exception{ driver.get("http://www.baidu.com"); Actions action = new Actions(driver); //在指定元素上進行鼠標懸浮 action.moveToElement(driver.findElement(By.name("tj_briicon"))).perform();; Thread.sleep(1000); //點擊懸浮後出現的菜單 driver.findElement(By.linkText("糯米")).click();; driver.close(); } //查看頁面元素的屬性 @Test public void getWelementAttribute(){ driver.get("http://www.baidu.com"); String str = "今每天氣不錯"; WebElement input = driver.findElement(By.id("kw")); input.sendKeys(str); String inputText = input.getAttribute("value"); System.out.println("....."+inputText); Assert.assertEquals(inputText,"今每天氣不錯"); driver.close(); } //獲取頁面元素的css屬性 @Test public void getWelementCss(){ driver.get("http://www.baidu.com"); WebElement input = driver.findElement(By.id("kw")); String cssValue = input.getCssValue("width"); System.out.println("..... "+cssValue); driver.close(); } //經常使用的顯式等待 @Test public void testWait(){ //聲明一個WebDriverWait對象,設置最長等待時間爲10秒 WebDriverWait wait = new WebDriverWait(driver, 10); //判斷頁面title是否包含「測試頁面」4個字 String str = "測試頁面"; wait.until(ExpectedConditions.titleContains("測試頁面")); System.out.println("頁面標題出現了‘測試頁面’4個字"); } /** * 判斷頁面元素是否存在 * @param by * @return */ //提供一個頁面元素是否存在的方法 public boolean isEelement(By by){ WebElement element = driver.findElement(by); if(element != null){ return true; } return false; } @Test public void testIsEelement(){ driver.get("http://www.baidu.com"); //System.out.println(driver.getTitle()); if(isEelement(By.id("kw"))){ WebElement webElement = driver.findElement(By.id("kw")); if(webElement.isEnabled()){ webElement.sendKeys("百度的首頁搜索框被成功找到"); } }else { //將測試用例設置爲失敗,並打印失敗緣由 Assert.fail("頁面的輸入框元素未找到"); } driver.close(); } //使用title屬性識別和操做新彈出的瀏覽器窗口 @Test public void operteWindow(){ driver.get("file:///F:/workspace/selenium_day01/text.html"); //將當前瀏覽器窗口句柄存在一個變量中 String parentWindowHandle = driver.getWindowHandle(); //點擊頁面上的連接地址 driver.findElement(By.xpath("//a")).click(); //獲取當前全部打開的窗口的句柄,並存在set中 Set<String> windowHandles = driver.getWindowHandles(); if(windowHandles != null){ for(String windowHandle : windowHandles){ if(driver.switchTo().window(windowHandle).getTitle().equals("百度一下,你就知道")){ driver.findElement(By.id("kw")).sendKeys("百度的首頁瀏覽器窗口被找到"); }else { Assert.fail("百度的首頁瀏覽器窗口未被找到"); } //返回到最開始打開的瀏覽器窗口 driver.switchTo().window(parentWindowHandle); Assert.assertEquals(driver.getTitle(),"測試頁面"); } } } //使用頁面的文字內容識別和處理新彈出的瀏覽器窗口 @Test public void operteWindowByPageSource(){ driver.get("file:///F:/workspace/selenium_day01/text.html"); //將當前瀏覽器窗口句柄存在一個變量中 String parentWindowHandle = driver.getWindowHandle(); //點擊頁面上的連接地址 driver.findElement(By.xpath("//a")).click(); //獲取當前全部打開的窗口的句柄,並存在set中 Set<String> windowHandles = driver.getWindowHandles(); for(String windowHandle : windowHandles){ try { if(driver.switchTo().window(windowHandle).getPageSource().contains("百度一下")){ driver.findElement(By.id("kw")).sendKeys("百度首頁的瀏覽器窗口被找到"); } } catch (NoSuchWindowException e) { e.printStackTrace(); } } //返回到最開始打開的瀏覽器窗口 driver.switchTo().window(parentWindowHandle); Assert.assertEquals(driver.getTitle(),"測試頁面"); } //操做javascript的Alter窗口 @Test public void operteAlert(){ driver.get("file:///F:/workspace/selenium_day01/text.html"); //查找到按鈕元素 WebElement button = driver.findElement(By.name("btn")); button.click(); try { //獲取alert對象 Alert alert = driver.switchTo().alert(); Assert.assertEquals("這是一個alert彈窗", alert.getText()); //關閉彈窗 alert.accept(); } catch (NoAlertPresentException e) { Assert.fail("頁面alert彈窗未找到"); e.printStackTrace(); } } //操做javascript的confirm窗口 @Test public void operteConfirm(){ driver.get("file:///F:/workspace/selenium_day01/text.html"); driver.findElement(By.name("confirmbtn")).click(); try { Alert alert = driver.switchTo().alert(); Assert.assertEquals("這是一個confirm彈窗", alert.getText()); alert.accept(); // 點擊肯定,關閉彈出窗 //alert.dismiss(); // 點擊取消,關閉彈出窗 } catch (NoAlertPresentException e) { Assert.fail("頁面confirm彈窗未找到"); e.printStackTrace(); } } // 操做javascript的prompt窗口 @Test public void opertePrompt() throws Throwable { driver.get("file:///F:/workspace/selenium_day01/text.html"); driver.findElement(By.name("promptbtn")).click(); try { Alert alert = driver.switchTo().alert(); Assert.assertEquals("這是一個prompt彈窗", alert.getText()); alert.sendKeys("好好學習,每天向上"); Thread.sleep(3000); alert.accept(); } catch (NoAlertPresentException e) { Assert.fail("頁面prompt彈窗未找到"); e.printStackTrace(); } } /** * 操做iframe中的頁面元素 */ @Test public void testFrame(){ driver.get("file:///F:/workspace/selenium_day01/frameset.html"); //必須先進入左側frame_left.html頁面 driver.switchTo().frame("leftframe"); //找到頁面上的p標籤 WebElement leftFrameText = driver.findElement(By.xpath("//p")); Assert.assertEquals("這是左側 frame 頁面上的文字", leftFrameText.getText()); //從左側返回到frame_left頁面 若是不調用 defaultContent()方法,沒法從frame_left進入其餘頁面 driver.switchTo().defaultContent(); //進入frame_middle頁面 driver.switchTo().frame("middleframe"); WebElement middleFrameText = driver.findElement(By.xpath("//p")); Assert.assertEquals("這是中間 frame 頁面上的文字", middleFrameText.getText()); driver.switchTo().defaultContent(); driver.switchTo().frame("rightframe"); WebElement rightFrameText = driver.findElement(By.xpath("//p")); Assert.assertEquals("這是右側 frame 頁面上的文字", rightFrameText.getText()); driver.switchTo().defaultContent(); driver.switchTo().frame(1); WebElement text = driver.findElement(By.tagName("p")); //System.out.println(">>>>>>"+ text.getText()); Assert.assertEquals("這是中間 frame 頁面上的文字", text.getText()); driver.close(); } //使用frame中的html源碼內容來操做frame @Test public void testHandleFarme(){ driver.get("file:///F:/workspace/selenium_day01/frameset.html"); //找到全部frame標籤的內容 List<WebElement> frames = driver.findElements(By.tagName("frame")); for(WebElement frame : frames){ driver.switchTo().frame(frame); //判斷frame頁面源碼中是否包含「中間 frame」 if(driver.getPageSource().contains("中間 frame")){ //找到頁面P標籤頁面對象 WebElement text = driver.findElement(By.xpath("//p")); Assert.assertEquals("這是中間 frame 頁面上的文字", text.getText()); break; }else { //返回frameset頁面 driver.switchTo().defaultContent(); } } driver.switchTo().defaultContent(); driver.close(); } }
public class Demo3 { WebDriver driver; @BeforeMethod public void Visitor(){ System.setProperty("webdriver.chrome.driver", "e:\\chromedriver.exe"); driver = new ChromeDriver(); } // 在指定元素上方進行鼠標懸浮,及點擊懸浮後出現的菜單 @Test public void roverOnElement() throws Exception { driver.get("http://www.baidu.com"); Actions action = new Actions(driver); // 在指定元素上進行鼠標懸浮 action.moveToElement(driver.findElement(By.name("tj_briicon"))).perform(); Thread.sleep(1000); // 點擊懸浮後出現的菜單 driver.findElement(By.linkText("糯米")).click(); ; driver.close(); } // 使用frame中的html源碼內容來操做frame @Test public void testHandleFarme() { driver.get("file:///F:/workspace/selenium_demo/src/main/webapp/frameset.html"); // 找到全部frame標籤的內容 List<WebElement> frames = driver.findElements(By.tagName("frame")); for (WebElement frame : frames) { driver.switchTo().frame(frame); // 判斷frame頁面源碼中是否包含「中間 frame」 if (driver.getPageSource().contains("中間 frame")) { // 找到頁面P標籤頁面對象 WebElement text = driver.findElement(By.xpath("//p")); Assert.assertEquals("這是中間 frame 頁面上的文字", text.getText()); break; } else { // 返回frameset頁面 driver.switchTo().defaultContent(); } } driver.switchTo().defaultContent(); driver.close(); } //操做iframe的頁面元素 @Test public void testHandleFarme2(){ driver.get("file:///F:/workspace/selenium_demo/src/main/webapp/frameset.html"); driver.switchTo().frame("leftframe"); //找到包含「這是iframe 頁面上的文字」的元素對象 WebElement iframe = driver.findElement(By.tagName("iframe")); //進入iframe頁面區域 driver.switchTo().frame(iframe); //在iframe頁面找p標籤的頁面元素 WebElement p = driver.findElement(By.xpath("//p")); Assert.assertEquals("這是iframe 頁面上的文字", p.getText()); driver.close(); } //操做瀏覽器的cookie @Test public void testCookie(){ driver.get("http://www.baidu.com"); //獲得當前頁面下全部的cookie,並輸出所在域、name、value、有效時期和路徑 Set<Cookie> cookies = driver.manage().getCookies(); Cookie cookie = new Cookie("cookieName", "cookieValue"); System.out.println(String.format("Domain->name->value->expiry->path")); for(Cookie cookie2 : cookies){ System.out.println(String.format( "%s->%s->%s->%s->%s", cookie2.getDomain(), cookie2.getName(), cookie2.getValue(), cookie2.getExpiry(), cookie2.getPath() )); } //刪除cookie //經過cookie的namen屬性刪除 driver.manage().deleteCookieNamed("cookieName"); //經過cookie對象刪除 driver.manage().deleteCookie(cookie); //刪除所有cookie driver.manage().deleteAllCookies(); } }