一般的彈窗呢大多數是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()