Mở nhiều tab trong Selenium Python

Một repo mẫu giúp bạn xử lý nhiều tab trong thử nghiệm tự động hóa bằng Python-selenium trên LambdaTest. Chạy tập lệnh python thử nghiệm tự động hóa của bạn trên Lambdatest

tự động hóa python selen python3 kiểm tra tự động hóa Selenium-webdriver Selenium-python Kiểm tra tự động hóa Selenium nhiều tab python-Selenium-multiple-tabs python-multiple-tab Selenium-multiple-tabs xử lý nhiều tab xử lý nhiều tab

Tôi đang cố gắng tạo tập lệnh python bằng selen sẽ mở nhiều tab chrome. Vì vậy, tôi đã tạo một vòng lặp như bên dưới nhưng nó dừng lại trên 9 cửa sổ khi tôi thay thế "url" bằng url thực trỏ đến video. Bạn có bất kỳ ý tưởng những gì có thể sai ở đây?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome[]
number = 0
while number < 100:
  driver.execute_script['''window.open["url","_blank"];''']
  driver.switch_to.window[driver.window_handles[number]]
  number = number + 1

ghi bàn. 0

Tôi đã thử mã như vậy và nó hoạt động bình thường. Tôi không đếm các tab đã mở, nhưng chúng chắc chắn nhiều hơn 10 và chương trình hoàn thành không có lỗi.
Đây là mã tôi đã sử dụng [giống mã của bạn nhưng có nhiều chi tiết hơn].

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

options = Options[]
options.add_argument["start-maximized"]

webdriver_service = Service['C:\webdrivers\chromedriver.exe']
driver = webdriver.Chrome[service=webdriver_service, options=options]
url = '//www.some_rela_url'
driver.get[url]
number = 0
for number in range[100]:
  driver.execute_script['''window.open["url","_blank"];''']
  driver.switch_to.window[driver.window_handles[number]]

ghi bàn. 0

Như thế này nó hoạt động và mở 100 tab

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common import window

options = webdriver.ChromeOptions[]
options.add_experimental_option["detach", True]
options.add_argument["start-maximized"]
driver = webdriver.Chrome[service=Service[ChromeDriverManager[].install[]], options=options]
for _ in range[100]:
    driver.switch_to.new_window[window.WindowTypes.TAB]

Bài đăng nổi bật từ cùng một thẻ

Trong hướng dẫn này, chúng ta sẽ học cách xử lý nhiều tab trình duyệt trong một tập lệnh Selenium duy nhất. Selenium WebDriver không cung cấp bất kỳ lệnh nào cho tác vụ này.  

Nhưng chúng ta có thể sử dụng các lệnh Selenium hiện có theo cách thông minh hơn để tự động hóa kịch bản này. Mặc dù trường hợp này khá hiếm và bạn sẽ không gặp phải nó thường xuyên



1. Xử lý nhiều tab trình duyệt với Selenium

Sử dụng Lớp hành động Selenium để xử lý nhiều tab trình duyệt

Lớp Actions trong Selenium là một lớp đặc biệt cung cấp cho chúng ta các câu lệnh rất hữu ích, giúp chúng ta sao chép các sự kiện Bàn phím và Chuột. e. , nhấn/thả bất kỳ Phím nào, di chuyển con trỏ, kéo và thả, nhấp chuột phải, nhấp đúp, v.v. Bạn có thể tìm hiểu chi tiết về Actions Class tại đây.  


Trong kịch bản của chúng ta, chúng ta sẽ sử dụng các lệnh điều khiển Key của lớp Actions để tự động mở và tự động hóa nhiều trình duyệt. Hãy hiểu từng bước logic toàn bộ mã

1. 1. Khởi chạy google. com với Selenium WebDriver

Đây là phần phổ biến nhất, chúng tôi sẽ khởi chạy google. com với Selenium WebDriver như bình thường


// Set Driver path
System.setProperty["webdriver.chrome.driver", "C:\\AUTOMATION\\chromedriver.exe"];

// Initialize driver  
WebDriver driver=new ChromeDriver[];

//Maximize browser window   
driver.manage[].window[].maximize[];  

//Go to URL  
driver.get["//www.google.com"];  

//Set timeout  
driver.manage[].timeouts[].implicitlyWait[10, TimeUnit.SECONDS];  


1. 2. Tự động mở hai tab trình duyệt

Bây giờ, tab trình duyệt đầu tiên của chúng tôi đã được mở và google. com được khởi chạy bên trong nó. Vì vậy, bước 2 là mở tab trình duyệt thứ hai của chúng tôi. Giống như chúng ta đã biết rằng theo cách thủ công, chúng ta có thể mở một tab mới trong trình duyệt bằng cách nhấn phím 'ctrl' và phím 't' cùng nhau. Chúng ta sẽ tự động hóa phím tắt này bằng Selenium Actions Class


// Open new tab by pressing ctrl + t
driver.findElement[By.cssSelector["body"]].sendKeys[Keys.CONTROL + "t"];  

//Go to URL  
driver.get["//www.gmail.com"];  

//Set new tab timeout  
driver.manage[].timeouts[].implicitlyWait[10, TimeUnit.SECONDS];  

// Do some operations on gmail like login      


1. 3. Tự động hóa Chuyển đổi giữa hai tab trong khi thực thi tập lệnh tự động hóa

Chúng tôi có thể chuyển đổi giữa các tab khác nhau trên trình duyệt bằng cách nhấn 'ctrl' và 'tab'. Chúng tôi sẽ tự động hóa tương tự với lớp Hành động


// Switch back to first tab [google.com] by pressing ctrl + tab
driver.findElement[By.cssSelector["body"]].sendKeys[Keys.CONTROL + "\t"];  
driver.switchTo[].defaultContent[];  
Thread.sleep[2000];  

// Do some operation on google.com


Quan trọng - Chúng ta cũng có thể sử dụng Robot Class của Java để xử lý nhiều tab.

Mã để xử lý hai tab trình duyệt với Selenium.

______6

      // Set Driver path
      System.setProperty["webdriver.chrome.driver", "C:\\AUTOMATION\\geckodriver.exe"];
// Khởi tạo trình điều khiển . = new FirefoxDriver[]; //Maximize browser window driver.quản lý[]. cửa sổ[]. tối đa hóa[]; //Đi tới trình điều khiển URL .lấy["http. //www. Google. com"]; //Đặt thời gian chờ cho trình điều khiển driver. quản lý[]. thời gian chờ[]. chờ hoàn toàn[10, Đơn vị thời gian . .GIÂY]; // Mở tab mới trình điều khiển .findElement[ Bởi . cssSelector["body"]]. sendKeys[ Keys . KIỂM SOÁT + "t"]; //Go to URL driver.lấy["http. //www. gmail. com"]; //Đặt thời gian chờ cho tab mới trình điều khiển . quản lý[]. hết giờ[]. chờ hoàn toàn[10, Đơn vị thời gian . .GIÂY]; // Thực hiện một số thao tác trình điều khiển .findElement[ Bởi . id["đăng nhập bằng gmail"]]. nhấp vào[]; trình điều khiển . findElement[ Bởi . id["Email"]]. sendKeys["WebDriver"]; driver.findElement[ Bởi . id["Passwd"]]. sendKeys["WebDriver"]; driver.findElement[ Bởi . id["đăng nhập"]]. nhấp vào[]; Chủ đề . ngủ[2000]; . driver.findElement[ Bởi . cssSelector["body"]]. SendKeys[ Keys . KIỂM SOÁT + "\t"]; driver.Chuyển sang[]. nội dung mặc định[]; Chủ đề . ngủ[2000]; . driver.findElement[ Bởi . ["gbqfq"]]. sendKeys["WebDriver"]; // Click on Search button driver.findElement[ Bởi . ["gbp fba>]]. nhấp vào[]; Chủ đề . ngủ[2000]; . driver.đóng[]; } }


Giải thích chương trình.

  • Mở Google. com
  • Sau đó mở một tab mới bằng cách sử dụng lớp Key. Bằng cách kết hợp phím CTRL + t, một tab trình duyệt mới sẽ được mở
  • Mở Gmail. com trong tab đó
  • Thực hiện một số thao tác trên trang đăng nhập Gmail
  • Chuyển về google. tab com bằng cách nhấn Ctrl + \t
  • Bây giờ hãy nhập một số từ khóa vào hộp tìm kiếm google
  • Đóng các trình duyệt



2. Xử lý cảnh báo với Selenium WebDriver

Trong phần này của bài đăng, chúng ta sẽ học cách xử lý các cảnh báo hoặc cửa sổ bật lên với Selenium WebDriver bằng cách sử dụng Java. Nói chung có hai loại cảnh báo.

  1. Cảnh báo web
  2. Cảnh báo cửa sổ
Out of these two only web based alerts can be handled using Selenium WebDriver. Window alerts cannot be handled using selenium WebDriver, but there are other ways of handling the window alerts and we will discuss that strategy in next post. In this post we are going to handle web based alerts.

2. 1. Cảnh báo Web là gì?

Cảnh báo web nói chung là một cửa sổ bật lên dựa trên JavaScript xuất hiện trên màn hình. Nó thường có một tin nhắn văn bản và hai nút có thể là Có hoặc Không, Chấp nhận hoặc Bỏ qua, Đồng ý hoặc Hủy




2.2. How to Handle an Alert with Selenium?

Chúng tôi đã biết rằng chúng tôi không thể thực hiện nhiều thao tác trên một cảnh báo. Có một lớp Cảnh báo trong Selenium WebDriver, tất cả các lệnh xử lý cảnh báo đều có trong lớp đó. Chúng ta phải tạo đối tượng của lớp Alert và sau đó chúng ta có thể gọi các lệnh đó để xử lý các cảnh báo. Dưới đây là cú pháp cách sử dụng các lệnh đó để xử lý cảnh báo web

cú pháp


________số 8


Giải thích mã

  1. Trước hết chúng ta đã tạo đối tượng của lớp Alert và đặt tên nó là 'alert'. Và ở phía bên phải của '=', chúng tôi đang chuyển trọng tâm của việc thực thi WebDriver sang cảnh báo để các lệnh tiếp theo có thể được thực hiện trên cảnh báo chứ không phải trên trang web có bên dưới cảnh báo
  2. báo động. accept[] lệnh là chấp nhận bất kỳ cảnh báo nào. Giống như nếu chúng tôi muốn nhấp vào nút Có, Chấp nhận hoặc Xác nhận trên bất kỳ cảnh báo nào thì chúng tôi sẽ sử dụng lệnh này
  3. báo động. câu lệnh bỏ qua [] được sử dụng để loại bỏ một cảnh báo. Giống như nếu bạn muốn nhấp vào nút Không, Hủy, Bỏ qua trên bất kỳ cảnh báo nào thì chúng tôi sẽ sử dụng lệnh này


2.3. How to Validate Alert message?

Ngoài việc nhấp vào nút OK hoặc Hủy, một hành động khác cần được thực hiện trên cảnh báo trong khi tự động hóa là xác thực thông báo hiển thị trên cảnh báo. Chúng tôi có cảnh báo. lệnh getText[] trong lớp Cảnh báo có thể được sử dụng để xác thực thông báo cảnh báo

Làm cách nào để mở nhiều tab trong Selenium?

Để làm như vậy, hãy sử dụng phương pháp Lớp Hành động hoặc sử dụng các phương thức giao diện Selenium WebDriver getWindowHandle & getWindowHandles. .
Mở địa chỉ Amazon
Tìm kiếm “Tai nghe” trong thanh tìm kiếm
Lưu URL của Tai nghe
Mở một tab mới
Chuyển sang tab mới và khởi chạy URL được lưu trữ

Làm cách nào để mở nhiều cửa sổ trong Selenium Python?

Xử lý nhiều cửa sổ con trong Selenium Python .
Nhấp vào liên kết “Phương thức bật lên cửa sổ'
Trong trang web mới, nhấp vào nút “Theo dõi Twitter & Facebook” để mở các cửa sổ con
Chuyển sang từng cửa sổ con đang mở bằng tiêu đề trang
In tiêu đề trang của mỗi cửa sổ con
Đóng phiên trình duyệt

Làm cách nào để mở nhiều cửa sổ trong Selenium?

Đặt thuộc tính hệ thống thành Chromedriver và chỉ định đường dẫn của nó
Khởi tạo webdriver sang chromedriver mới
Nhận URL của trang web và tối đa hóa trang
Lấy tay cầm cửa sổ của cửa sổ cha
Lấy tay cầm cửa sổ của tất cả các cửa sổ

Làm cách nào để xử lý nhiều tab trình duyệt trong Selenium?

1. 1. Khởi chạy google. com với Selenium WebDriver. Đây là phần phổ biến nhất, chúng tôi sẽ khởi chạy google. com với Selenium WebDriver như bình thường. .
1. 2. Tự động mở hai tab trình duyệt. .
1. 3. Tự động hóa Chuyển đổi giữa hai tab trong khi thực thi tập lệnh tự động hóa

Chủ Đề