在硒中切换和聚焦新打开的标签

时间:2016-01-22 13:45:17

标签: python google-chrome selenium

您好我使用selenium点击链接,通常使用在线网络应用程序。

单击特定链接时遇到问题,该链接会打开新选项卡并在新打开的选项卡中执行操作。我有这段代码:

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上打开新选项卡。当我尝试点击新打开的标签上的链接时,我会得到一个“无元素”字样。例外,意味着它无法找到我正在寻找的元素。

两个问题:

1)webdriver是否知道新打开的选项卡已打开并在该选项卡上执行操作?也许我必须告诉它。我试过了

main_window = browser.current_window_handle
browser.switch_to_window(main_window)

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

2)有没有办法看看计算机是否知道它在新标签上?

1 个答案:

答案 0 :(得分:2)

检查driver.window_handles是否返回多个instanc,第二个应该是新打开的选项卡。使用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")