java&&python+Selenium3自動化入門6---操作div遮罩層模擬的彈窗及百度首頁登錄

一般的彈窗呢大多數是Alert這樣的,但是也有很多事由div遮罩層渲染出來的,所以有時候我們會誤以爲這樣的彈窗是一個alert,然後習慣性的使用下面的方法來處理,但是卻沒有任何反應,這就是因爲他是由div盒子渲染出來的,通過display屬性來控制他是否彈出

driver.switchTo().alert().accept();
下面我們先來看一個例子:
<html> 
    <head> 
        <title>點擊文字彈出一個DIV層窗口代碼</title> 
        <style> 
        .black_overlay{ 
            display: none; 
            position: absolute; 
            top: 0%; 
            left: 0%; 
            width: 100%; 
            height: 100%; 
            background-color: black; 
            z-index:1001; 
            -moz-opacity: 0.8; 
            opacity:.80; 
            filter: alpha(opacity=88); 
        } 
        .white_content { 
            display: none; 
            position: absolute; 
            top: 25%; 
            left: 25%; 
            width: 55%; 
            height: 55%; 
            padding: 20px; 
            border: 10px solid green; 
            background-color: white; 
            z-index:1002; 
            overflow: auto; 
        } 
    </style> 
    </head> 
    <body> 
        <p id = "lock">示例彈出層:<a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block'">請點這裏...</a></p> 
        <div id="light" class="white_content">這是一個div彈窗 
<a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'">點這裏關閉...</a></div> 
        <div id="fade" class="black_overlay"></div> 
    </body> 
</html>

注意我標註的海底藍,當display爲block的時候,點擊href超鏈接是會彈出一個div遮罩層的,但是當把.style.dispay=‘block’修改爲.style.dispay=‘none’這個時候是不會彈出的


下面我們點擊藍色字體超鏈接,入下圖所示,彈出的就是一個div盒子模擬的彈窗


針對這樣的彈窗我們用alert是無法處理的,只需要按照正常的操作流程去定位就行,代碼如下

package divForSelenium;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class divBox {
	public static void main(String[] args) throws Exception {  
		WebDriver driver = new FirefoxDriver();
		driver.manage().window().maximize();
		String url = "file:///C:/Users/xll/Desktop/divbox.html";
		driver.get(url);
		driver.findElement(By.xpath(".//*[@id='lock']/a")).click();
		Thread.sleep(2000);
		driver.findElement(By.xpath(".//*[@id='light']/a")).click();
                driver.quit();
                System.out.println("the divBox have been closed");
	}
}

控制檯輸入結果:



對於java登錄百度首頁還沒找到好的方法不知道爲什麼就是失敗,所以只能先寫一篇python的了,但是又不知道爲何python可以如此簡單的就登錄成功,等我問問前端同學再來解答這個問題,直接看代碼吧!

driver.get("https://www.baidu.com/")
time.sleep(1)
#點擊登錄按鈕
driver.find_element_by_xpath(".//*[@id='u1']/a[@class='lb']").click()
driver.find_element_by_id("TANGRAM__PSP_10__footerULoginBtn").click()
#輸入登錄信息
driver.find_element_by_id("TANGRAM__PSP_10__userName").sendKeys("your ID")
driver.find_element_by_id("TANGRAM__PSP_10__password").sendKeys("your PASSWORD")
#點擊登錄按鈕
driver.find_element_by_id("TANGRAM__PSP_10__submit").click()
time.slppe(10)
#關閉瀏覽器
driver.quit()

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