在 selenium 中控制 firefox 标签
Controlling firefox tabs in selenium
根据 window_handles
documentation:
window_handles
Returns the handles of all windows within the current session.
但是,打开新标签页后,我在window_handles
列表中看不到新句柄:
>>> from selenium import webdriver
>>> from selenium.webdriver.common.keys import Keys
>>>
>>> driver = webdriver.Firefox()
>>> driver.get("http://whosebug.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://whosebug.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']
只有顶级浏览器 window 有 HWND。选项卡没有自己的 HWND。有关更多说明,请参阅 here.
Selenium 有一个句柄 Windows 而不是标签。你也可以使用像这样的代码在选项卡上工作
ArrayList<String> tabs2 = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs2.get(0));
这将允许您处理选项卡 1 和
driver.switchTo().window(tabs2.get(1));
将允许您处理第二个 tab.By 这样您就可以在浏览器中处理选项卡。
根据 window_handles
documentation:
window_handles
Returns the handles of all windows within the current session.
但是,打开新标签页后,我在window_handles
列表中看不到新句柄:
>>> from selenium import webdriver
>>> from selenium.webdriver.common.keys import Keys
>>>
>>> driver = webdriver.Firefox()
>>> driver.get("http://whosebug.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://whosebug.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']
只有顶级浏览器 window 有 HWND。选项卡没有自己的 HWND。有关更多说明,请参阅 here.
Selenium 有一个句柄 Windows 而不是标签。你也可以使用像这样的代码在选项卡上工作
ArrayList<String> tabs2 = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs2.get(0));
这将允许您处理选项卡 1 和
driver.switchTo().window(tabs2.get(1));
将允许您处理第二个 tab.By 这样您就可以在浏览器中处理选项卡。