【问题标题】:Unable to switch to Window/popup in Firefox using selenium Webdriver in Python [duplicate]无法在 Python 中使用 selenium Webdriver 在 Firefox 中切换到窗口/弹出窗口 [重复]
【发布时间】:2016-08-12 13:58:17
【问题描述】:

我有一个 URL http://travel.aol.co.uk/2016/03/23/best-hotels-for-families-mediterranean/,其中包含一些社交分享链接,例如 Twitter、Facebook 等。当我点击它们时,它们会打开一个新窗口。但是,我无法在该窗口上执行操作,因为我无法切换到该窗口。任何帮助表示赞赏。我尝试了 switchTo 方法,但它们不起作用。任何帮助表示赞赏。

下面是代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get('http://travel.aol.co.uk/2016/03/23/best-hotels-for-families-     mediterranean/')
window_before = driver.window_handles[0]
linkElement = driver.find_element_by_class_name('share-icon-twitter')
linkElement.click()
window_after = driver.window_handles[1]
driver.switch_to_window(window_after)
print (driver.title)

当我最后打印标题时,什么都没有显示。但如果我切换回旧窗口然后打印标题,则会显示正确的标题。

谢谢。

【问题讨论】:

    标签: python selenium


    【解决方案1】:

    如果您的需求是在窗口之间切换,您可以通过 switch_to_window 方法来实现。还有window_handles,这将有助于获得窗口。

        from selenium import webdriver
        from selenium.webdriver.common.keys import Keys
    
        driver = webdriver.Firefox()
        driver.get(url)
        first_window = driver.window_handles[0]
        linkitem = driver.find_element_by_id("id")
        linkitem.click()
        second_window = driver.window_handles[1]
        driver.switch_to_window(second_window)
    

    如果你想回到第一个窗口,你可以使用

         driver.switch_to_window(first_window)
    

    希望对您有所帮助。谢谢你

    【讨论】:

    • 嗨,San,尝试了您的建议,但是在我尝试打印页面标题的最后一行末尾,它没有打印任何内容。以下是代码。
    • from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox() driver.get('travel.aol.co.uk/2016/03/23/…) window_before = driver.window_handles[0] linkElement = driver. find_element_by_class_name('share-icon-twitter') linkElement.click() window_after = driver.window_handles[1] driver.switch_to_window(window_after)
    • hii @VishwanathRKulkarni 你是如何尝试打印页面标题的?我尝试使用以下代码,它对我来说工作正常 title=driver.find_element_by_xpath(r'\html\head\title') 。它没有打印实际文本,但能够找到标题并正在打印元素 ID。