1、Alert類
- Alert是指windows彈窗的一些操作,需要new一個Alert類
- driver.switchTo().alert():切換到alert窗口
- alert.getText():取得彈窗上面的字符串
- alert.accept():點擊確定/ok類的按鈕,使彈窗消失
- alert.dismiss():取消
public void testAlert(){ WebElement element = driver.findElement(By.className("alert")); element.click(); Alert alert = driver.switchTo().alert(); String text = alert.getText(); alert.accept(); //alert.dismiss(); System.out.println(text); }
使用Actions類
- 先要new一個Actions的類對象
- 最後的perform()一定要加上,否則執行不成功
public void testAlertByActions(){ WebElement element = driver.findElement(By.className("alert")); Actions action = new Actions(driver); action.click(element).perform(); Alert alert = driver.switchTo().alert(); String text = alert.getText(); alert.accept(); //alert.dismiss(); System.out.println(text); }
2、Action類
- 先要new一個Actions的類對象
- 最後的perform()一定要加上,否則執行不成功
public void testActions(){ WebElement element = driver.findElement(By.className("over")); Actions action = new Actions(driver); action.moveToElement(element).perform(); String text = driver.findElement(By.id("over")).getText(); System.out.println(text); }
3、調用JS
- 一般用來執行一段JS,來改變HTML
- 一些非標準控件無法用selenium2的API時,可以執行JS的辦法來取代
- executeScript這個方法的參數爲字符串,爲一段JS代碼
public void testJS(){ JavascriptExecutor executor = (JavascriptExecutor)driver; executor.executeScript("alert('helloworld')"); }
4、Wait機制及實現
- 在規定的時間內只要符合條件即返回,下面的代碼中是隻要isDisplayed即返回
public void testWait(){ WebElement waitButton = driver.findElement(By.id("wait")); waitButton.click(); boolean flag = new WebDriverWait(driver, 10).until ( new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver driver) { return driver.findElement(By.className("red")).isDisplayed(); } } ); if(flag){ String text = driver.findElement(By.className("red")).getText(); System.out.println(text); } }
5、Iframe操作
- 如果iframe標籤有能夠唯一確定的id或者name,就可以直接用id或者name的值:driver.switchTo().frame("aa");
- 如果iframe標籤沒有id或者name,但能夠通過頁面上確定其是第幾個(也就是通過index來定位iframe,index是從0開始的):driver.switchTo().frame(0);
- 還可以通過xpath的方式來定位iframe,寫法如下:
- WebElement iframe = driver.findElement(By.xpath("//iframe[@name='aa']"));
- driver.switchTo().frame(iframe);
public void testIFrame(){ driver.findElement(By.id("user")).sendKeys("test"); driver.switchTo().frame("aa"); driver.findElement(By.id("user")).sendKeys("iframe test"); driver.switchTo().defaultContent();//返回頂層frame driver.findElement(By.id("user")).sendKeys("---new test"); }
6、多窗口切換
- gettWindowHandles:取得driver所打開的所有的頁面的句柄
- witchTo是指切換到相應的窗口中去,window中的參數是指要切過去的窗口的句柄
public void testMultiWindow(){ driver.findElement(By.id("user")).sendKeys("test"); String handle = driver.getWindowHandle();//獲取當前窗口的句柄 System.out.println(handle); WebElement element = driver.findElement(By.className("open")); element.click(); Set<String> handles = driver.getWindowHandles(); for(String s : handles) { if(!s.equals(handle)) { System.out.println(s); driver.switchTo().window(s); driver.findElement(By.id("kw")).sendKeys("glen"); } } driver.switchTo().window(handle); driver.findElement(By.id("user")).sendKeys("---new test"); }