說到這裏我們首先要先說下Alert是如何來的,一般是用來確認某些操作、輸入簡單的text或用戶名、密碼等,根據瀏覽器的不同,彈出框的樣式也不一樣,在firebug中是無法獲取到該框的元素的,也就是說alert是不屬於網頁DOM樹的。直接看代碼!
<html>
<head lang="en">
<meta charset="UTF-8">
<title>帥氣的老王</title>
<script language="JavaScript">
alert("哈哈,我又變帥了")
</script>
<script type="text/javascript">
function getInnerHTML(){
alert( document.getElementById("tr1").innerHTML);
}
</script>
</head>
<body>
<!--
<script src = "test.js"></script>
-->
<input type="button" value="按鈕" onclick="alert('hello')"/>
<table border="1">
<tr id="tr1">
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr id="tr2">
<td>Peter</td>
<td>Griffin</td>
</tr>
</table>
<br />
<input type="button" onclick="getInnerHTML()"
value="Alert innerHTML of table row" />
</body>
</html>
上面的代碼大家可以看到在打開的時候,最先彈出的是這樣的一個彈框,這就是典型的alert彈窗,當我們不點擊確定的時候,這個頁面是不會加載下一步的,所以我們會看到頁面並沒有加載完成,左上角的也是一直顯示在加載,右下角會一直顯示:正在傳輸來自localhost的數據。
對於Alert,selenium提供了專門的方法
/*
* .accept() 點擊alert彈窗上的確定按鈕
* .dismiss() 點擊alert彈窗上的取消按鈕
* .getText() 獲取alert上的文字信息
* .sendKeys() 在彈窗上輸入文字等信息
*/
下面我們就看看用代碼如何去操作alert彈窗的
package com.Lion.D1;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class AlertAccept {
public static void main(String[] args) throws Exception {
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
String PhotoUrl = "http://localhost:63342/untitled3/src/lions.html";
driver.get(PhotoUrl);
Thread.sleep(2000);
// swithTo()切換到alert並.getText()獲取alert的文本內容
System.out.println(driver.switchTo().alert().getText());
//處理alert
driver.switchTo().alert().accept();
System.out.println("彈窗已關閉");
}
}
控制檯輸出結果:
哈哈,我又變帥了
彈窗已關閉
第二個就是div盒子模擬的彈框,比如說百度的登錄頁面
對於這種彈窗,用alert是解決不了的,因爲它是一個div盒子,可以看成是一個新的窗口,對於新的窗口我們需要用句柄的相關知識來解決,具體的可以看我的下一篇文章。