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ố 8Hoặ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']
0Và đâ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ẻ. ]