Selen nhấp chuột phải mở trong tab mới python

Tôi đang sử dụng Selenium của Python [với IE webdriver] để mở một tab mới. tuy nhiên, tôi không thể xử lý tab mới. Dưới đây là mã mẫu cho thấy vấn đề

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

#open IE
driver = webdriver.Ie[]

# Open new tab
driver.find_element_by_tag_name['body'].send_keys[Keys.CONTROL + 't']

# Print handles
print[driver.window_handles]

Câu trả lời cho câu lệnh in ở trên, là

['5bd4ca0b-0095-4851-a36d-54f8c602c906']

Tôi muốn nhận danh sách có HAI mục, nhưng tôi chỉ nhận được một mục

Đoạn mã trên hoạt động nếu tôi sử dụng trình duyệt web Chrome. Vì vậy, đây có phải là lỗi trong trình duyệt web IE không?

ghi bàn. 1

chính thức, bạn không thể. Selenium sử dụng đặc tả WebDriver để giao tiếp với các trình duyệt, nhưng đặc tả này không hỗ trợ tab—chỉ có cửa sổ

Như ví dụ của bạn cho thấy, bạn có thể hack các giải pháp thay thế cho các trình duyệt và hệ điều hành cụ thể. Nhưng những gì ví dụ của bạn không hiển thị là lý do tại sao bạn muốn. Có lý do cụ thể nào khiến bạn không thể sử dụng một cửa sổ mới không?

Và có thể buộc selen mở nó trong tab mới không. [Giống như chúng ta Nhấp chuột phải - mở trong tab mới]

và sau đó làm thế nào để xử lý các tab

ghi bàn. 1

Selenium Supports Mouse Hover actions and Right Click functionality, where user can right click on link and choose to open in new Tab.

WebDriver driver = new FirefoxDriver[];
driver.get[URL];
Actions act = new Actions[driver];
WebElement linkpath = driver.Findelement[by.xpath[path of the link]];
act.contextclick[linkpath].perform[];  // right click
act.sendkeys["T"].perform[]; // click on new tab

ghi bàn. 4

Selenium không cung cấp cách riêng để mở một tab mới. Bao giờ bạn có thể sử dụng cách giải quyết. Mọi trình duyệt đều có một số phím tắt để mở các tab mới. Bạn có thể sử dụng phương thức sendkeys để làm điều đó

Gần đây tôi đã làm việc bằng cách sử dụng Python 3. 6. x và Selenium 3. x cho mục đích thử nghiệm và tôi gặp sự cố khi mở một URL trong tab mới và đóng nó. Hóa ra là tùy thuộc vào “trình điều khiển web” nào và phiên bản Python và Selenium bạn sử dụng, một số phương pháp hiệu quả và một số thì không.

Có rất nhiều gợi ý khác nhau trên Internet về cách thực hiện “điều đơn giản” đó nhưng không có gợi ý nào phù hợp với tôi. Đây là lý do tại sao tôi muốn chia sẻ với bạn một bài viết ngắn trong đó tôi mô tả giải pháp mà tôi đã phát triển và giải pháp đó hiệu quả với tôi

Đây là những gì tôi sử dụng

  • Trăn 3. 6. 5
  • selen 3. 141. 0
  • Trình điều khiển web = Chrome

Nhiệm vụ

“Mở một URL bằng Chrome [hãy gọi nó là A] và ngay sau đó mở một URL thứ hai [hãy gọi nó là B] trong một tab mới, đóng tab /URL B/ và quay lại tab đầu tiên /URL A/. ”

Nó không phải là một vấn đề lớn. Hãy để tôi giải thích cho bạn làm thế nào để làm điều đó. Tôi sẽ sử dụng Trang tìm kiếm của Google để trình diễn, bạn nên thực hiện các bước với trang web bạn muốn

Trước hết, hãy mở Trang chứa liên kết/liên kết

Tôi đã tìm kiếm "youtube" trên Công cụ Tìm kiếm của Google và tôi đang sử dụng Trang Kết quả Tìm kiếm để Trình diễn

Bước 1. - Nhấp chuột phải vào liên kết bạn muốn mở trong tab mới và nhấp vào nút kiểm tra

Bây giờ, bạn sẽ thấy Bảng điều khiển dành cho nhà phát triển xuất hiện ở cuối hoặc bên phải của trang

Bước 2. - Bây giờ, Nhấp chuột phải vào thẻ 'a' chứa liên kết và đi tới Sao chép và nhấp vào XPath


Bước 3. - Bây giờ, hãy chuyển sang viết mã, trước hết hãy nhập Webdriver từ gói Selenium

from selenium import webdriver

Đảm bảo bạn có chromedriver. exe trong thư mục mà bạn đặt File Python của mình, Nếu không có thì Click vào đây để tải phiên bản Theo Chrome của bạn

Bước 4. - Bây giờ chúng ta sẽ Khởi tạo Trình điều khiển Chrome và Lấy Url của trang web

driver = webdriver.Chrome[]
driver.get['//www.google.com/search?q=youtube']

Bước 5. - Bây giờ chúng ta sẽ Tìm thẻ 'a' bằng XPath mà chúng ta đã sao chép trước đó và sau đó lấy thuộc tính href của thẻ a

url = driver.find_element_by_xpath['//*[@id="rso"]/div[1]/div/div/div/div/div/div[1]/a'].get_attribute['href']

Bước 6. - Bây giờ chúng ta sẽ thực thi 1 đoạn Javascript Script giúp mở tab mới sau đó chúng ta sẽ Sử dụng chức năng webdriver để chuyển sang tab mới mở

driver.execute_script['window.open[''];']
driver.switch_to.window[driver.window_handles[1]]

Bước 7. - Sau đó, chúng tôi sẽ nhận được liên kết mà chúng tôi đã tìm nạp bằng cách tìm thuộc tính href của phần tử

driver.get[url]

Và đây, bạn đã mở liên kết trong tab mới. Nếu bạn muốn đóng tab thì chỉ cần sử dụng mã này

________số 8

Hoặc nếu bạn muốn Chuyển về Tab trước thì Sử dụng mã này

driver.switch_to.window[driver.window_handles[0]]

=> Cách Mở Link Thường Trong Tab Mới?

Giống như Hình trên, Điều này cũng rất dễ dàng. Chúng tôi chỉ cần lấy một liên kết và sau đó mở một tab mới bằng cách thực thi Tập lệnh JS rồi chuyển sang Tab mới và sau đó lấy url. Đây là mã cho điều đó

['5bd4ca0b-0095-4851-a36d-54f8c602c906']
0

Và đây, tôi đã giải thích Cách mở, chuyển đổi và đóng tab bằng Python Selenium. Tôi hy vọng bạn thích nó và nó đã giúp bạn. Cảm ơn vì đã đọc và xin đừng quên chia sẻ. ]

Làm cách nào để nhấp chuột phải và mở trong tab mới trong Selenium Python?

python-selenium-open-tab. md .
Mở một cửa sổ/tab mới bằng cách mô phỏng nhấp chuột vào một liên kết
Thêm tiêu điểm vào tab mới này
Đợi một phần tử trên trang mới được hiển thị [ui. WebDriverChờ]
Làm bất cứ điều gì tôi phải làm trên trang mới này
Đóng tab
Trả lại tiêu điểm cho công cụ mở cửa sổ ban đầu

Làm cách nào để mở tab mới bằng cách nhấp chuột phải vào Selenium?

keyUp[Phím. LEFT_CONTROL]. xây dựng[]. perform[]; ` việc sửa đổi mã này sẽ mở liên kết trong tab mới nhưng tab đó sẽ đóng ngay lập tức và liên kết được mở trong tab chính.

Làm cách nào để mở một tab mới bằng Selenium Webdriver trong Python?

Mở tab mới bằng Selenium . Sau khi thực thi tập lệnh, chúng ta có thể chuyển sang cửa sổ bằng cách sử dụng. phương thức switch_to_window[]. executescript[] method of selenium can be used. After executing the script we can switch to the window using . switch_to_window[] method.

Làm cách nào để tiếp tục sau khi nhấp vào liên kết đến trang mới trong Selenium bằng Python?

Bạn cần phải chuyển sang cửa sổ hoặc tab mới để nhận ra phần tử mới đó . Ngoài ra, bạn sẽ cần triển khai một số kiểu chờ, để tập lệnh đợi một lúc, trước khi chuyển sang trang mới và sau đó tìm phần tử.

Chủ Đề