1、對話框處理
Alert alert = driver.switchTo().alert();
alert.accept(); //確定
alert.dismiss(); //取消
alert.getText(); //取到文本內容
實際系統中,彈出窗口必定是某些操作完成、信息加載之後用做提示,因此彈出窗口有時出現得快,有時出現得慢,直接使用driver.switchTo().alert();很容易出現執行失敗的情況。
咱們先判斷是否出現了彈出框,封裝成以下方法:
protected boolean alertExists(int seconds) {
long start = System.currentTimeMillis();
while ((System.currentTimeMillis() - start) < seconds * 1000) {
try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException ne) {
System.out.println("not find alert!");
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
return false;
}
2、頁面跳轉,彈出窗口
//得到當前窗口的句柄
String currentWindow = driver.getWindowHandle();
//得到所有窗口的句柄
Set<String> handles = driver.getWindowHandles();
Iterator<String> it = handles.iterator();
while(it.hasNext()){
if(currentWindow == it.next()) continue;
WebDriver window = driver.switchTo().window(it.next()); //獲得新窗口,新的webDriver實例。
System.out.println("title,url = "+window.getTitle()+","+window.getCurrentUrl());
}
另外,還有的iframe 之間轉換方法
driver.switchTo().defaultContent();
切換到某個frame:
driver.switchTo().frame("leftFrame");
從一個frame切換到另一個frame:
driver.switchTo().frame("mainFrame");
切換到某個window:
driver.switchTo().window("windowName");
3、遍歷控件
List<WebElement> elements= driver.findElements(By.linkText("開始學習"));
elements.get(1).click();
findElements()方法返回所有相同的WebElement的List,咱們直接訪問某一個元素,也可以遍歷操作,,,這種功能大家都不回拒絕
遍歷
for (Iterator<WebElement> i = elements.iterator(); i.hasNext();) {
WebElement integerRef = i.next();
}
4、執行JS
Web driver對Java Script的調用是通過JavascriptExecutor來實現的,例如:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("(function(){inventoryGridMgr.setTableFieldValue('"+ inventoryId + "','" + fieldName + "','"
+ value + "');})()");