2016-01-22 71 views
4

您好,我使用硒来点击链接,并且通常使用在线Web应用程序。在硒中切换并聚焦新打开的标签

我点击一个特定的链接,打开一个新标签并在新打开的标签中执行一个动作,我遇到了麻烦。我有这样的代码:

friend_link = browser.find_element_by_tag_name('a') 
friend_link.click() # this is where new tab is opened 

在这之后的webdriver(从我的眼睛)打开新的标签没有我不得不打电话

browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB) 

所以,一切都很好。新的选项卡在webdriver上打开。当我尝试点击新打开的选项卡上的链接时,出现'No element'异常,这意味着它无法找到我正在查找的元素。

两个问题:

1)是否webdriver的知道,一个新开的标签被打开,并执行该选项卡上的行动?也许我必须告诉它。我试过

main_window = browser.current_window_handle 
browser.switch_to_window(main_window) 

这是应该重新聚焦新打开的标签,但没有运气。

2)有没有办法查看计算机是否知道它在新选项卡上?

+0

我加了一个答案,你可以试试。 –

回答

2

检查driver.window_handles如果它返回多个实例,第二个应该是新打开的选项卡。使用driver.switch_to_window(instance-id)来切换它。见下:

>>> driver.window_handles 
[u'CDwindow-608A7C64-A633-4DEC-B88F-6A2578C47669'] 
>>> driver.window_handles 
[u'CDwindow-608A7C64-A633-4DEC-B88F-6A2578C47669', u'CDwindow-A2A95622-3146-4BF6-9E7A-7A6632A73C86'] 
>>> driver.current_window_handle 
u'CDwindow-608A7C64-A633-4DEC-B88F-6A2578C47669' 
>>> driver.switch_to.window("CDwindow-A2A95622-3146-4BF6-9E7A-7A6632A73C86") 
>>> driver.current_window_handle 
u'CDwindow-A2A95622-3146-4BF6-9E7A-7A6632A73C86' 
>>> driver.get("http://www.amazon.com") 
+1

在[文档](http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webdriver)中,它提到了'.switch_to_window'已被弃用,以支持'.switch_to.window ' – wasabigeek

+0

switch_to_window已弃用,因此更改为switch_to.window感谢@wasabigeek –