Đóng cửa sổ bật lên selen python

Trong hướng dẫn trước, chúng tôi đã tập trung thảo luận về các loại chờ đợi khác nhau do WebDriver cung cấp. Chúng tôi cũng đã thảo luận về các loại tùy chọn điều hướng có sẵn trong WebDriver

Tiếp tục trong Hướng dẫn về Selenium WebDriver, chúng ta sẽ thảo luận về các loại cảnh báo khác nhau có sẵn trong khi thử nghiệm các ứng dụng web và chiến lược xử lý của chúng.

Đóng cửa sổ bật lên selen python

Có hai loại cảnh báo mà chúng tôi sẽ tập trung chủ yếu vào

  1. Cửa sổ bật lên cảnh báo dựa trên Windows
  2. Cửa sổ bật lên cảnh báo dựa trên web

Như chúng tôi biết rằng việc xử lý cửa sổ bật lên dựa trên cửa sổ nằm ngoài khả năng của WebDriver, do đó chúng tôi sẽ sử dụng một số tiện ích của bên thứ ba để xử lý cửa sổ bật lên

Xử lý cửa sổ bật lên là một trong những phần công việc khó khăn nhất để tự động hóa trong khi thử nghiệm các ứng dụng web. Do sự đa dạng trong các loại cửa sổ bật lên, tình hình thậm chí còn phức tạp hơn

Hộp thông báo/ Hộp bật lên/ Hộp xác nhận/ Lời nhắc/ Hộp xác thực là gì?

Nó không là gì ngoài một hộp nhỏ xuất hiện trên màn hình hiển thị để cung cấp cho bạn một số loại thông tin hoặc để cảnh báo bạn về một thao tác có khả năng gây hại hoặc thậm chí nó có thể yêu cầu bạn cấp quyền cho thao tác đó

Thí dụ. Chúng ta hãy xem xét một ví dụ thực tế để hiểu rõ hơn; . Sau này, tôi muốn xóa bức ảnh đã tải lên. Vì vậy, để xóa, tôi đã nhấp vào nút xóa. Ngay khi tôi nhấp vào nút xóa, hệ thống sẽ cảnh báo tôi về hành động của mình, nhắc nhở - Bạn có thực sự muốn xóa tệp không?

Vì vậy, trước phiên, hãy xem cách chúng tôi từ chối hoặc chấp nhận các cảnh báo tùy thuộc vào loại của chúng. Bắt đầu với cửa sổ bật lên dựa trên web

Bạn sẽ học được gì

Cửa sổ bật lên dựa trên web

Đóng cửa sổ bật lên selen python

Hãy để chúng tôi xem cách chúng tôi xử lý chúng bằng WebDriver

Xử lý hộp bật lên dựa trên web

WebDriver cung cấp cho người dùng một cách rất hiệu quả để xử lý các cửa sổ bật lên này bằng giao diện Cảnh báo

Có bốn phương thức mà chúng tôi sẽ sử dụng cùng với giao diện Cảnh báo

1) bỏ trống () – Phương thức loại bỏ () nhấp vào nút “Hủy” ngay khi cửa sổ bật lên xuất hiện
2) void accept() – Phương thức accept() nhấp vào nút “Ok” ngay khi cửa sổ bật lên xuất hiện
3) Chuỗi getText() – Phương thức getText() trả về văn bản được hiển thị trên hộp cảnh báo
4) void sendKeys(String stringToSend) – Phương thức sendKeys() nhập mẫu chuỗi đã chỉ định vào hộp cảnh báo

Hãy để chúng tôi tiếp tục và xem xét việc triển khai thực tế

Giải thích về ứng dụng đang thử nghiệm

Chúng tôi đã thiết kế một trang web theo cách bao gồm một số loại phần tử web cơ bản. Đây là cùng một ứng dụng mà chúng tôi đã giới thiệu khi thảo luận về Chọn lớp trước đó trong loạt bài này

  • siêu liên kết. Hai siêu liên kết có tên là “Google” và “abodeQA” đã được cung cấp để chuyển hướng người dùng đến “http. //www. Google. com/” và “http. //www. chỗ ở. com/” tương ứng trên sự kiện nhấp chuột
  • thả xuống. Ba siêu liên kết đã được tạo để chọn màu sắc, trái cây và động vật với giá trị được đặt thành mặc định
  • Cái nút. Nút “dùng thử” đã được tạo để hiển thị hộp bật lên có các nút OK và Hủy khi nhấp vào sự kiện

(Click vào hình để xem phóng to)

 

Đóng cửa sổ bật lên selen python

Tiếp theo là mã HTML được sử dụng để tạo trang web nêu trên



 Testing Select Class 


Click the button to display a confirm box.

Kịch bản được tự động hóa

  1. Khởi chạy trình duyệt web và mở trang web
  2. Nhấp vào nút “Dùng thử”
  3. Chấp nhận cảnh báo
  4. Nhấp vào nút “Thử lại” lần nữa
  5. Từ chối cảnh báo

Mã WebDriver sử dụng Chọn lớp

Xin lưu ý rằng để tạo tập lệnh, chúng tôi sẽ sử dụng dự án “Learning_Selenium” được tạo trong hướng dẫn trước

Bước 1. Tạo một lớp java mới có tên là “DemoWebAlert” trong dự án “Learning_Selenium”
Bước 2. Sao chép và dán mã bên dưới vào “DemoWebAlert. lớp java”

Dưới đây là kịch bản thử nghiệm tương đương với kịch bản nêu trên

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

/**
* class description
*/

public class DemoWebAlert {
                WebDriver driver;
                /**
                * Constructor
                */
                public DemoWebAlert() {                            
                }

                /**
                * Set up browser settings and open the application
                */

                @Before
                public void setUp() {
                                driver=new FirefoxDriver();
                                // Opened the application
                                driver.get("file:///F:/Work/Selenium/Testing-Presentation/DemoWebPopup.htm");
                                driver.manage().window().maximize();
                }

                /**
                * Test to check Select functionality
                * @throws InterruptedException
                */

                @Test
                public void testWebAlert() throws InterruptedException {                          
                                // clicking on try it button
                                driver.findElement(By.xpath("//button[contains(text(),'Try it')]")).click();
                                Thread.sleep(5000);

                                // accepting javascript alert
                                Alert alert = driver.switchTo().alert();
                                alert.accept();

                                // clicking on try it button
                                driver.findElement(By.xpath("//button[contains(text(),'Try it')]")).click();
                                Thread.sleep(5000);

                                // accepting javascript alert
                                driver.switchTo().alert().dismiss();

                                // clicking on try it button
                                driver.findElement(By.xpath("//button[contains(text(),'Try it')]")).click();
                                Thread.sleep(5000);

                                // accepting javascript alert
                                System.out.println(driver.switchTo().alert().getText());
                                driver.switchTo().alert().accept();
                }

                /**
                * Tear down the setup after test completes
                */

                @After
                public void tearDown() {             
                    driver.quit();
                }
} 

Hướng dẫn mã

Báo cáo nhập khẩu

Nhập tổ chức. openqa. selen. Cảnh báo – Nhập gói này trước khi tạo tập lệnh Gói tham chiếu đến lớp Cảnh báo được yêu cầu để xử lý các cảnh báo dựa trên web trong WebDriver

Tạo đối tượng cho lớp Cảnh báo
Cảnh báo cảnh báo = trình điều khiển. chuyển sang(). báo động();

Chúng tôi tạo một biến tham chiếu cho lớp Cảnh báo và tham chiếu nó đến cảnh báo

Chuyển sang Cảnh báo
Tài xế. chuyển sang(). báo động();
Lệnh trên được sử dụng để chuyển điều khiển sang cửa sổ bật lên được tạo gần đây

Chấp nhận cảnh báo
báo động. Chấp nhận();
Lệnh trên chấp nhận cảnh báo do đó nhấp vào nút Ok

Từ chối cảnh báo
báo động. bỏ qua();
Lệnh trên đóng cảnh báo do đó nhấp vào nút Hủy và do đó thao tác sẽ không tiếp tục

Cửa sổ bật lên dựa trên cửa sổ

Đóng cửa sổ bật lên selen python

Đôi khi trong khi tự động hóa, chúng tôi gặp một số tình huống, trong đó chúng tôi cần xử lý cửa sổ bật lên do cửa sổ tạo ra như cửa sổ in bật lên hoặc cửa sổ duyệt trong khi tải tệp lên

Cũng đọc =>> Cách xử lý tệp tải lên trong Selenium

Việc xử lý các cửa sổ bật lên này luôn gặp một chút khó khăn vì chúng tôi biết Selenium là một công cụ kiểm tra tự động chỉ hỗ trợ kiểm tra ứng dụng web, điều đó có nghĩa là nó không hỗ trợ các ứng dụng dựa trên cửa sổ và cảnh báo cửa sổ là một trong số đó. Tuy nhiên, một mình Selenium không thể giúp giải quyết tình hình nhưng cùng với sự can thiệp của bên thứ ba, vấn đề này có thể được khắc phục

Có một số công cụ của bên thứ ba có sẵn để xử lý cửa sổ bật lên dựa trên cửa sổ cùng với Selenium

Vì vậy, bây giờ hãy xử lý một cửa sổ bật lên dựa trên lớp Robot

Lớp robot là một tiện ích dựa trên java mô phỏng các thao tác của bàn phím và chuột

Trước khi tiếp tục, chúng ta hãy dành một chút thời gian để xem qua ứng dụng đang được thử nghiệm (AUT)

Giải thích về ứng dụng đang thử nghiệm

Là một ứng dụng đang được thử nghiệm, chúng tôi sẽ sử dụng “gmail. com”. Tôi tin rằng ứng dụng không yêu cầu bất kỳ lời giới thiệu nào nữa

Kịch bản được tự động hóa

  1. Khởi chạy trình duyệt web và mở ứng dụng – “gmail. com”
  2. Nhập tên người dùng và mật khẩu hợp lệ
  3. Bấm vào nút đăng nhập
  4. Bấm vào nút soạn
  5. Bấm vào biểu tượng đính kèm
  6. Chọn các tệp sẽ được tải lên với cửa sổ bật lên dựa trên cửa sổ

Mã WebDriver sử dụng Lớp Robot

Xin lưu ý rằng để tạo tập lệnh, chúng tôi sẽ sử dụng dự án “Learning_Selenium” được tạo trong hướng dẫn trước

Bước 1. Tạo một lớp java mới có tên là “DemoWindowAlert” trong dự án “Learning_Selenium”
Bước 2. Sao chép và dán mã bên dưới vào “DemoWindowAlert. lớp java”

Dưới đây là kịch bản thử nghiệm tương đương với kịch bản nêu trên

 import java.awt.Robot;
import java.awt.event.KeyEvent; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class DemoWindowAlert { WebDriver driver; @Before public void setUp() { driver=new FirefoxDriver(); driver.get("https://gmail.com"); driver.manage().window().maximize(); } @Test public void testWindowAlert() throws Exception{ // enter a valid email address driver.findElement(By.id("Email")).sendKeys("[email protected]"); // enter a valid password driver.findElement(By.id("Passwd")).sendKeys("TestSelenium"); // click on sign in button driver.findElement(By.id("signIn")).click(); Thread.sleep(30000); // click on compose button driver.findElement(By.xpath("//div[@class='z0']//div[contains(text(),'COMPOSE')]")).click(); // click on attach files icon driver.findElement(By.xpath("//div[contains(@command,'Files')]//div[contains(@class,'aaA')]")).click(); // creating instance of Robot class (A java based utility) Robot rb =new Robot(); // pressing keys with the help of keyPress and keyRelease events rb.keyPress(KeyEvent.VK_D); rb.keyRelease(KeyEvent.VK_D); Thread.sleep(2000); rb.keyPress(KeyEvent.VK_SHIFT); rb.keyPress(KeyEvent.VK_SEMICOLON); rb.keyRelease(KeyEvent.VK_SEMICOLON); rb.keyRelease(KeyEvent.VK_SHIFT); rb.keyPress(KeyEvent.VK_BACK_SLASH); rb.keyRelease(KeyEvent.VK_BACK_SLASH); Thread.sleep(2000); rb.keyPress(KeyEvent.VK_P); rb.keyRelease(KeyEvent.VK_P); rb.keyPress(KeyEvent.VK_I); rb.keyRelease(KeyEvent.VK_I); rb.keyPress(KeyEvent.VK_C); rb.keyRelease(KeyEvent.VK_C); Thread.sleep(2000); rb.keyPress(KeyEvent.VK_ENTER); rb.keyRelease(KeyEvent.VK_ENTER); Thread.sleep(2000); } @After public void tearDown() { driver.quit(); } }

Hướng dẫn mã

Báo cáo nhập khẩu

nhập java. awt. Robot – Nhập gói này trước khi tạo tập lệnh Gói tham chiếu đến lớp Robot trong java được yêu cầu mô phỏng các sự kiện bàn phím và chuột

nhập java. awt. biến cố. KeyEvent – ​​Gói cho phép người dùng sử dụng các sự kiện keyPress và keyRelease của bàn phím

Tạo đối tượng cho lớp Robot
Robot rb =Robot mới();
Chúng ta tạo một biến tham chiếu cho lớp Robot và khởi tạo nó

Sự kiện KeyPress và KeyRelease
rb. keyPress(KeyEvent. VK_D);
rb. keyRelease(KeyEvent. VK_D);

Các phương thức keyPress và keyRelease mô phỏng người dùng nhấn và nhả một phím nhất định trên bàn phím tương ứng

Phần kết luận

Trong hướng dẫn này, chúng tôi đã cố gắng giúp bạn làm quen với lớp Cảnh báo của WebDriver được sử dụng để xử lý các cửa sổ bật lên dựa trên web. Chúng tôi cũng đã thông báo cho bạn về lớp Robot có thể được sử dụng để điền giá trị vào cảnh báo dựa trên cửa sổ với sự trợ giúp của các sự kiện keyPress và keyRelease

Tóm tắt bài viết

  • Cảnh báo là một hộp nhỏ xuất hiện trên màn hình hiển thị để cung cấp cho bạn một số loại thông tin hoặc để cảnh báo bạn về một thao tác có khả năng gây hại hoặc thậm chí nó có thể yêu cầu bạn cấp quyền cho thao tác đó
  • Có hai loại cảnh báo phổ biến–
    • Cửa sổ bật lên cảnh báo dựa trên Windows
    • Cửa sổ bật lên cảnh báo dựa trên web
  • Trước khi viết tập lệnh thực tế, chúng ta cần nhập một gói để có thể tạo tập lệnh WebDriver để xử lý trình đơn thả xuống và làm cho lớp Chọn có thể truy cập được
  • WebDriver cung cấp cho người dùng một cách rất hiệu quả để xử lý các cửa sổ bật lên này bằng giao diện Cảnh báo
  • void bỏ() – Phương thức bỏ qua() nhấp vào nút “Hủy” ngay khi cửa sổ bật lên xuất hiện
  • void accept() – Phương thức accept() nhấp vào nút “Ok” ngay khi cửa sổ bật lên xuất hiện
  • Chuỗi getText() – Phương thức getText() trả về văn bản được hiển thị trên hộp cảnh báo
  • void sendKeys(String stringToSend) – Phương thức sendKeys() nhập mẫu chuỗi đã chỉ định vào hộp cảnh báo
  • Xử lý các cửa sổ bật lên dựa trên cửa sổ luôn gặp một chút khó khăn vì chúng ta biết Selenium là một công cụ kiểm tra tự động hóa chỉ hỗ trợ kiểm tra ứng dụng web, điều đó có nghĩa là nó không hỗ trợ các ứng dụng dựa trên cửa sổ và cảnh báo cửa sổ là một trong số đó
  • Lớp robot là một tiện ích dựa trên java mô phỏng các thao tác của bàn phím và chuột và có thể được sử dụng một cách hiệu quả để xử lý cửa sổ bật lên dựa trên cửa sổ với sự trợ giúp của các sự kiện bàn phím
  • Các phương thức keyPress và keyRelease mô phỏng người dùng nhấn và nhả một phím nhất định trên bàn phím tương ứng

Hướng dẫn tiếp theo #17 . Trong hướng dẫn sắp tới, chúng ta sẽ thảo luận về các lệnh WebDriver thường được sử dụng khác. Chúng tôi sẽ làm sáng tỏ các chủ đề như xử lý ngoại lệ và xử lý khung nội tuyến. Chúng tôi cũng sẽ thảo luận về các lệnh nhận được cung cấp trong WebDriver.

Chúng tôi sẽ giải thích các chủ đề này bằng các ví dụ nhanh để người đọc dễ hiểu khi thực hiện các khái niệm này trong kịch bản hàng ngày của họ

Lưu ý dành cho người đọc. Cho đến lúc đó, hãy tiếp tục theo dõi và tự động hóa các trang web có cửa sổ bật lên dựa trên web và dựa trên cửa sổ bằng tiện ích WebDriver – “Lớp cảnh báo” và tiện ích Java – “Lớp Robot”

Vui lòng đăng truy vấn/nhận xét của bạn về điều này hoặc bất kỳ hướng dẫn nào khác trước đó trong các nhận xét bên dưới

Làm cách nào để đóng cửa sổ bật lên trong Selenium Python?

Để loại bỏ cửa sổ bật lên, phương thức switch_to. cảnh báo(). dismiss() được sử dụng. Để có được văn bản trên cửa sổ bật lên, chúng ta phải sử dụng switch_to.

Làm cách nào để đóng cửa sổ bật lên trong Selenium?

Trong Selenium, một lớp robot được sử dụng để xử lý các chức năng của bàn phím và chuột . Nó được sử dụng để đóng cửa sổ bật lên. Bạn có thể lấy tay cầm cửa sổ của cửa sổ bật lên bằng hàm WindowHandle().