为什么通过vba打开同一个选项卡两次时焦点会丢失

问题描述 投票:0回答:1

我有一个小的 vab 脚本,可以在 Firefox 中为特定站点打开一个新选项卡,并在其中输入一些数据。我必须一遍又一遍地这样做,并注意到每次打开选项卡时,焦点都会丢失 - 而且确实是每次打开。

我想知道这是 vba 还是 firefox 的问题,以及可以采取什么措施来避免这种情况。目前,我只是再使用一条 vba 行将焦点设置到新打开的选项卡,但我不明白问题首先发生在哪里。

您可以使用以下 vba 代码进行测试:

Sub Test_Firefox()

    'Shell """C:\Program Files\Mozilla Firefox\firefox.exe"" -safe-mode"

    Shell """C:\Program Files\Mozilla Firefox\firefox.exe"" -new-tab www.google.de"
    Shell """C:\Program Files\Mozilla Firefox\firefox.exe"" -new-tab www.google.de"
    'Shell """C:\Program Files\Mozilla Firefox\firefox.exe"" -new-tab www.google.de"

End Sub

打开标签一三次,焦点在google搜索,但打开两次,焦点就丢失了,看不清在哪里。

我在安全模式下尝试了 Firefox、不同的 Firefox 版本(ESR 和发行版)和两台笔记本电脑(但均装有 Microsoft 365)。

excel vba firefox focus
1个回答
0
投票

对我来说,第四个就发生了。我相信这不是 VBA 问题。更多的是 Firefox 的处理方式。

尝试给 Firefox 一些时间来处理命令。

Option Explicit

Sub Test_Firefox()
    Shell """C:\Program Files\Mozilla Firefox\firefox.exe"" -new-tab www.google.de"
    Wait 1 '<~~ Wait for 1 second
    Shell """C:\Program Files\Mozilla Firefox\firefox.exe"" -new-tab www.google.de"
    Wait 1
    Shell """C:\Program Files\Mozilla Firefox\firefox.exe"" -new-tab www.google.de"
    Wait 1
    Shell """C:\Program Files\Mozilla Firefox\firefox.exe"" -new-tab www.google.de"
    Wait 1
End Sub

Private Sub Wait(ByVal nSec As Long)
    nSec = nSec + Timer
    While nSec > Timer
        DoEvents
    Wend
End Sub

我也建议不要使用这种方法。使用适用于 Firefox 的 Selenium WebDriver。这样比较靠谱。还有一件事。如果用户使用 Microsoft Store 而不是在线/离线安装程序安装 Firefox,您的代码将会失败。

© www.soinside.com 2019 - 2024. All rights reserved.