簡體   English   中英

控制硒中的Firefox標簽

[英]Controlling firefox tabs in selenium

根據window_handles 文檔

window_handles

返回當前會話中所有窗口的句柄。

但是,打開新標簽頁后,我看不到新的句柄出現在window_handles列表中:

>>> from selenium import webdriver
>>> from selenium.webdriver.common.keys import Keys
>>>
>>> driver = webdriver.Firefox()
>>> driver.get("http://stackoverflow.com/")
>>> driver.window_handles
[u'{caca92e1-521e-9b4d-9374-00af0ae7d384}']
>>>
>>> # open a new tab
>>> driver.find_element_by_tag_name("body").send_keys(Keys.COMMAND + 't')
>>> driver.window_handles
[u'{caca92e1-521e-9b4d-9374-00af0ae7d384}']

如您所見, window_handles具有相同的值,但是我看到在瀏覽器中打開了2個選項卡。 我做錯了什么嗎? 如果是,應該如何獲取新標簽的句柄?

使用方法:

  • 硒2.44.0(最新)
  • Firefox 35.0(最新)
  • python 2.7.6

請注意,如果我要在Chrome中進行類似操作,則window_handles將顯示2個手柄:

>>> driver = webdriver.Chrome()
>>> driver.get("http://stackoverflow.com/")
>>> driver.execute_script('window.open("about:blank", "_blank");')
>>> driver.window_handles
[u'CDwindow-9458E5DB-D5ED-496C-BEE7-2FA468F3DF42', u'CDwindow-04C0FBBC-C418-465B-B6AF-F72B288B45C6']

僅頂級瀏覽器窗口具有HWND。 選項卡沒有自己的HWND。 有關更多說明,請參見此處

Selenium有一個Windows句柄,不包含選項卡。 您也可以使用以下代碼在標簽上進行操作

ArrayList<String> tabs2 = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs2.get(0));

這將使您能夠處理選項卡1和

driver.switchTo().window(tabs2.get(1));

將允許您在第二個選項卡上工作。通過這種方式,您可以處理瀏覽器中的選項卡。

暫無
暫無

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

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