[英]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.