章節十4、8-javaScript彈框處理

1、javaScript彈框沒有id、也沒有xpath,在F12開發者選項中沒法直接經過鼠標去選擇彈窗來肯定元素在代碼中的位置。javascript

彈窗有兩種,一種實只有「肯定」按鈕的alert類型的彈窗:html

另外一種是帶有「肯定」和「取消」按鈕的彈窗:java

 

2、如何在代碼中找到javaScript彈窗的位置?chrome

一、首先咱們須要定位出可以調出來彈窗的HTML的按鈕:api

二、在對應的標籤中咱們能夠看到,它們的屬性中都帶有一個onclick帶有函數值,例如alert按鈕對應的函數值爲「displayAlert()」,confirmbtn對應的函數值爲「displayConfirm()」。函數

三、經過對應的函數值去javaScript標籤中查找對應的代碼。學習

經過下面的圖片咱們能夠看到「displayAlert()」函數調用的是javascript中的alert功能,「displayAlert()」函數調用的是javascript中的confirmbtn功能。ui

 

3、案例演示url

 1 package switchto;
 2 
 3 import java.util.concurrent.TimeUnit;
 4 
 5 import org.junit.jupiter.api.AfterEach;
 6 import org.junit.jupiter.api.BeforeEach;
 7 import org.junit.jupiter.api.Test;
 8 import org.openqa.selenium.Alert;
 9 import org.openqa.selenium.By;
10 import org.openqa.selenium.WebDriver;
11 import org.openqa.selenium.chrome.ChromeDriver;
12 
13 class SwitchAlert {
14     
15     WebDriver driver;
16     String url;
17     
18     @BeforeEach
19     void setUp() throws Exception {
20         driver = new ChromeDriver();
21         url = "file:///C:/Users/acer/Desktop/%E5%85%B6%E5%AE%83/PracticePage.html";
22         driver.manage().window().maximize();
23         driver.manage().timeouts().implicitlyWait(2000, TimeUnit.SECONDS);
24         driver.get(url);
25     }
26 
27     @Test
28     void test1() throws InterruptedException {
29         driver.findElement(By.id("alertbtn")).click();
30         Thread.sleep(2000);
31 //        這個方法能夠返回一個alert對象
32         Alert alert = driver.switchTo().alert();
33 //        表示操做JavaScript彈窗的「肯定」按鈕
34         alert.accept();
35 //        表示操做JavaScript彈窗的「取消」按鈕,案例中alert沒有取消鍵,因此此處進行註釋
36 //        alert.dismiss();
37     }
38     
39     @Test
40     void test2() throws InterruptedException {
41         driver.findElement(By.id("confirmbtn")).click();
42         Thread.sleep(2000);
43 //        這個方法能夠返回一個alert對象
44         Alert confirmbtn = driver.switchTo().alert();
45 //        表示操做JavaScript彈窗的「肯定」按鈕
46 //        confirmbtn.accept();
47 //        表示操做JavaScript彈窗的「取消」按鈕
48         confirmbtn.dismiss();
49     }
50     
51     @AfterEach
52     void tearDown() throws Exception {
53         Thread.sleep(2000);
54         driver.quit();
55     }
56 }

 

若是有不明白的小夥伴能夠加羣「555191854」問我,羣裏都是軟件行業的小夥伴相互一塊兒學習。spa

內容具備連慣性,未標註的地方能夠看前面的博客,這是一整套關於ava+selenium自動化的內容,從java基礎開始。

歡迎關注,轉載請註明來源。

相關文章
相關標籤/搜索