在硒中控制Firefox的标签 [英] Controlling firefox tabs in selenium

查看:133
本文介绍了在硒中控制Firefox的标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

根据 window_handles
lockquote

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}']
>>>
>>> #打开一个新标签
>>> send_keys(Keys.COMMAND +'t')
>>> driver.find_element_by_tag_name(body driver.window_handles
[u'{caca92e1-521e-9b4d-9374-00af0ae7d384}']



<正如你所看到的, window_handles 具有相同的值,但是我在浏览器中看到了两个标签页。这是我做错了什么吗?如果是的话,我应该如何获得新选项卡的句柄?



使用:


  • selenium 2.44.0(latest)

  • firefox 35.0(latest)
  • 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。有关更多说明,请参阅此处


According to the window_handles documentation:

window_handles

Returns the handles of all windows within the current session.

But, I cannot see the new handle appearing in window_handles list after opening a new tab:

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

As you can see, window_handles has the same value, but I see 2 tabs opened in the browser. Is it something I am doing wrong? If yes, how should I obtain the handle of the new tab?

Using:

  • selenium 2.44.0 (latest)
  • firefox 35.0 (latest)
  • python 2.7.6

Note that if I would make a similar thing in Chrome, window_handles would show 2 handles:

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

解决方案

Only the top level browser window has an HWND. Tabs don't have their own HWNDs. For more clarification refer here.

这篇关于在硒中控制Firefox的标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆