【问题标题】:Controlling firefox tabs in selenium控制 selenium 中的 Firefox 选项卡
【发布时间】:2015-01-22 00:28:16
【问题描述】:

根据window_handlesdocumentation

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']

【问题讨论】:

    标签: python firefox selenium selenium-webdriver


    【解决方案1】:

    只有顶级浏览器窗口有 HWND。选项卡没有自己的 HWND。如需更多说明,请参阅here

    【讨论】:

      【解决方案2】:

      Selenium 有一个适用于 Windows 的句柄,而不是标签。您还可以使用类似这样的代码在选项卡上工作

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

      这将允许您在 Tab 1 和

      上工作
      driver.switchTo().window(tabs2.get(1));
      

      将允许您在第二个选项卡上工作。通过这种方式,您可以在浏览器中处理选项卡。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-27
        • 1970-01-01
        • 2014-04-01
        • 2016-08-18
        相关资源
        最近更新 更多