当前位置: 首页 > 知识库问答 >
问题:

控制硒中的火狐标签

易俊友
2023-03-14

根据< code>window_handles文档:

窗口句柄(_H)

返回当前会话中所有窗口的句柄。

但是,在打开一个新选项卡后,我无法在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 (最新)
  • 火狐 35.0 (最新)
  • 蟒蛇 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']

共有2个答案

汪思博
2023-03-14

Selenium有一个Windows的句柄,而不是标签。您还可以使用一些代码在选项卡上工作,如下所示

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

这将允许您处理选项卡1和

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

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

郑富
2023-03-14

只有顶级浏览器窗口有HWND。标签没有自己的HWND。有关更多说明,请参阅此处。

 类似资料:
  • 我在服务器上运行硒,我希望它在客户端上显示浏览器。我已经在我的服务器上启动了xvfb,如下所示: 然后在我的Java代码上我写道: 但当我启动时,我有一个例外: Selenium的版本是2.47.1,firefox的版本是33.0。

  • 我附上了一张我想从Chrome控制台运行的点击操作的图片,并传递了各种值。该按钮在inspect元素的右上角以灰色突出显示。这是我想学习如何访问/使用的函数。 按钮元素位于

  • 我在尝试启动浏览器时收到此错误消息: org.openqa.selenium.firefox.NotConnected异常:45000 ms后无法连接到端口7055上的主机127.0.0.1。Firefox控制台输出: s":[],"hasEmbeddedWebExtense": false} 我使用的是和。

  • 我在selenium firefox webdriver上运行了Cumber JVM测试。在eclipse上运行测试时一切都很正常,但当它们在Jenkins上运行时,浏览器上的url设置正确,但页面永远不会加载。Jenkins安装在windows机器上(不是无头)。可能很简单,但我似乎在网上找不到任何能给我指明正确方向的东西。 这篇文章(詹金斯与Xvfb和硒 - 火狐开始但什么都没有执行)指向硒更

  • 火狐中国版是谋智专为中国用户定制的浏览器,提供出色的全方位浏览体验。 立体:“火狐魔镜”让您边看视频听音乐,边轻松浏览网页;更整合众多本土内容 安全:独有架构对病毒木马有更强的抵抗力;首创浏览器植入防恶意软件功能 强大:5000个扩展帮您实现成千上万个新功能,更可随心所欲定制 智能:只需要在地址栏中输入一个字母或汉字,就知道您需要什么

  • 我试图找到解决这个问题的方法,我花了很多时间,但这对我来说几乎是不可能的。 问题:我在Firefox中使用Selenium和Java。我需要找到一个元素(列表框)并点击它。因此,代码找到元素,但单击操作不起作用。它在Google Chrome中每次都能很好地工作,只是有时在Firefox中(使用相同的Java代码有时工作,有时不工作)。 当程序进入页面时,有一部分代码包含元素: 还有一部分代码在单