簡體   English   中英

新標簽的手柄在哪里? -Python硒

[英]Where is the handle of a new Tab? - Python Selenium

我正在使用Python的Selenium(帶有IE webdriver)來打開新標簽頁...但是,我無法獲取新標簽頁的句柄。 下面是顯示問題的示例代碼:

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)

上面的打印語句的答案是:

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

我希望得到一個包含兩個項目的列表,但我只能得到一個。

如果我使用Chrome網絡驅動程序,則上面的代碼有效。 那么,這是IE Webdriver中的錯誤嗎?

正式地,你不能。 Selenium使用WebDriver規范與瀏覽器通信,但是該規范不支持選項卡-僅支持Windows。

如您的示例所示,您可以破解特定瀏覽器和操作系統的解決方法。 但是你的例子並不表明就是為什么你會 為什么不能僅使用新窗口有特定原因?

打開並使用新窗口

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

initial_windows = driver.window_handles
wait = WebDriverWait(driver, 10)
opened = EC.new_window_is_opened(initial_windows)

driver.execute_script("window.open();")
wait.until(opened)

initial_window = driver.current_window_handle
new_windows = list(set(driver.window_handles) - set(initial_windows))
new_window = new_windows[0]

driver.switch_to.window(new_window)
try:
    # ...
finally:
    driver.switch_to.window(initial_window)

獎勵:通過水豚簡化

from capybara.dsl import page

with page.window(page.open_new_window()):
    # ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM