使用Selenium VBA:如何访问由其他应用程序打开的Chrome窗口?

szqfcxe2  于 2022-12-06  发布在  Go
关注(0)|答案(2)|浏览(577)

我在Windows 10下使用Excel VBA Selenium。我想访问一个Chrome窗口,该窗口之前被另一个应用打开过,其名称只有第一部分是已知的,其余部分是每次创建时都会更改的代码。它与活动Chrome浏览器中的其他标签页一起打开。
为了启动Chrome with Selenium,我所知道的就是

Set dr = New ChromeDriver

这创建了一个对象“dr”。当我查找dr的属性时,属性“Windows”显示值“BrowserNotStartedError /浏览器未启动。请首先调用Get、Start或StartRemoteely”。
启动或获取创建一个新的Chrome示例,它不允许我访问已经打开的示例中的窗口。我试图使用没有“新建”的代码,但这不起作用。我还没有找到任何关于如何在Chrome的现有示例上工作的提示。这是可能的吗?如果不是,我还能如何访问任何现有的窗口?URL是唯一的,出于安全考虑,只能由第三方应用程序创建。如果我试图将URL复制到新的Chrome示例,我会收到身份验证错误,所以这不是一个选项。2这个网页基本上包含了一个菜单,可以让我安全地下载某些数据,我想自动化。3任何帮助都是感激的。

jbose2ul

jbose2ul1#

实际上,有一种方法可以用Chrome的Selenium驱动程序来实现这一点。找到你的chrome.exe目录,复制下面的行并将其附加到目标栏中。
--remote-debugging-port=9222(包括前面的空格)。
然后,将以下代码复制到一个vba模块中,执行它,它将允许您操作您创建的现有chrome会话。

Dim chromeBrowser As Selenium.ChromeDriver
Sub existingChromeSession()
      Set chromeBrowser = New Selenium.ChromeDriver
      chromeBrowser.SetCapability "debuggerAddress", "localhost:9222"
      chromebrowser.Get("https://www.google.com")
End Sub
njthzxwz

njthzxwz2#

我的问题已经解决了。使用Chrome的Selenium驱动程序,不可能访问没有用Selenium创建的Chrome标签。根据QHarr,可以通过使用shell/internet explorer在现有的IE窗口上获取句柄来实现。当然,在这种情况下,应用程序必须用IE创建HTML文件,也就是说,默认浏览器必须是IE。

相关问题