Java+Selenium3自動化入門5---如何操作Alert彈框和div盒子模擬的彈框

說到這裏我們首先要先說下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盒子,可以看成是一個新的窗口,對於新的窗口我們需要用句柄的相關知識來解決,具體的可以看我的下一篇文章。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章