【问题标题】:How do I attach to new browser windows如何附加到新的浏览器窗口
【发布时间】:2014-06-26 16:52:46
【问题描述】:

从 Stackoverflow 阅读和学习大量内容后,我终于有了一个似乎找不到答案的问题。

我正在使用 Python、Selenium (WebDriver) 和 Chrome 编写一些测试脚本。在其中一个脚本的过程中,必须单击一个链接,该链接会在新的 Chrome 窗口中打开一个 PDF 文档。这一切都很好,因为新窗口完全按照预期的方式弹出,但是,我无法弄清楚如何让我的代码与新窗口一起工作。

wd = WebDriver()
...

my_link = wd.find_elements_by_css_selector('a')[0]
my_link.click()     #will open the link target in a new window

我曾尝试做以下事情:

new_wd = WebDriver()
new_wd = my_link.click()

这行不通

我也有:

new_wd = WebDriver()
new_wd.get(my_link.get_attribute('href')

这不起作用,因为新的 chrome 窗口不像原始窗口那样登录。

我不知道在这里做什么,并且一直在寻找答案。 谢谢


所以这个问题的答案最终是我无法获得新窗口。

我最终做的是建立一个链接列表,我需要与它们的 href 一起访问这些链接。然后,我没有单击这些链接,而是使用 wd.get(listHref) 遍历列表,然后返回到原始 URL。这种方法符合我的要求,所以我会采用它。

感谢您的帮助。

【问题讨论】:

  • 是否可以在当前窗口中转到该页面?那将是最快的解决方案。否则,您可以从现有的 webdriver 中获取当前的 cookie 并将它们设置在新的 webdriver 中,这样您也可以在那里登录。假设 cookie 已设置。

标签: python google-chrome selenium selenium-webdriver


【解决方案1】:

为了移动到新窗口,您需要获取新窗口的窗口句柄并切换到它。这是链接How to handle the new window in Selenium WebDriver using Java? 虽然代码使用的是JAVA,但是python应该是类似的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多