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

如何在Selenium中切换到Python的新窗口?

申屠锦
2023-03-14

我正在使用Python进行selenium自动化项目。

我面临一个问题,这是处理多个浏览器窗口。

场景如下所示。当我单击主页上的链接时,将打开一个新窗口。在新打开的窗口中,我无法执行任何操作,因为焦点仍然在主页web驱动程序上。

谁能告诉我如何将焦点从背景窗口转换到新打开的窗口?

一种可能的解决方案是driver.switch_to.window(),但它需要窗口的名称。如何找出窗口的名字?如果这是一个错误的方法,谁能给出一些代码例子来执行这个操作?

共有2个答案

丌官昊天
2023-03-14

window_handles应该提供对所有打开窗口的引用。

这就是docu关于切换窗口的内容。

封永嘉
2023-03-14

您可以通过使用window_handlesswitch_to_window方法来实现。

单击链接之前,首先将窗口句柄存储为

window_before = driver.window_handles[0]

单击链接后,将新打开窗口的窗口句柄存储为

window_after = driver.window_handles[1]

然后执行switch to window方法以移动到新打开的窗口

driver.switch_to_window(window_after)

同样,您可以在新旧窗口之间切换。下面是代码示例

import unittest
from selenium import webdriver

class GoogleOrgSearch(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Firefox()

    def test_google_search_page(self):
        driver = self.driver
        driver.get("http://www.cdot.in")
        window_before = driver.window_handles[0]
        print window_before
        driver.find_element_by_xpath("//a[@href='http://www.cdot.in/home.htm']").click()
        window_after = driver.window_handles[1]
        driver.switch_to_window(window_after)
        print window_after
        driver.find_element_by_link_text("ATM").click()
        driver.switch_to_window(window_before)

    def tearDown(self):
        self.driver.close()

if __name__ == "__main__":
    unittest.main()
 类似资料:
  • 问题内容: 寻找有关如何获得新的“弹出”窗口的帮助,该窗口在单击“登录”按钮后触发显示。 我能够到达显示窗口的时间,但是我不相信我当前用来获取窗口“句柄”的代码是否正常运行。我的情况有所不同,因为我在页面内使用量角器,但是出现的新窗口不是基于角度的,因此当我在该窗口中时,我必须切换为仅使用Selenium WebDriver。(任何人都不知道这种方法是否有问题?) 在下面,您可以找到我用来创建se

  • > 我正在将控件从父窗口传递到子窗口 我正在子窗口中执行操作 执行后,将从子窗口再打开一个窗口(第一个子窗口的子窗口)。 我必须关闭两个子窗口并返回父窗口。 我无法将控件从子窗口切换到父窗口。我已经试用了下面的代码 /在子窗口中执行操作/

  • 问题内容: 寻找有关如何获得新的“弹出”窗口的帮助,该窗口在单击“登录”按钮后触发显示。 我能够到达显示窗口的时间,但是我不相信我当前用来获取窗口“句柄”的代码是否正常运行。我的情况有所不同,因为我在页面内使用量角器,但是出现的新窗口不是基于角度的,因此当我在该窗口中时,必须切换为仅使用Selenium WebDriver。(任何人都不知道这种方法是否有问题?) 在下面,您可以找到我用来创建sel

  • 问题内容: 我正在尝试使用Selenium,Python和BS4在iframe中访问iframe 在返回的文本中,似乎还有两个iframe。我将如何访问那些?我尝试上面的代码没有成功。 问题答案: 将返回到文档顶部。发生的事情是您切换到第一个,然后又切换回文档的顶部,然后尝试查找第二个。硒找不到第二个,因为它在第一个之内。 如果删除第二个,则应该没问题:

  • 我对python和Splint是新手。我阅读了关于splinter的文档,但它没有提到selenium库中关于switch_to like的任何内容。 当我运行这段代码时,我得到一个错误。 任何想法都欢迎。谢了!