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

Selenium+VBA控制Chrome

谯德元
2023-03-14

我使用selenium+vba启动chrome来打开单元格范围(“A1:A10”)中列出的10个URL。我对硒并不熟悉,在尝试了很多次之后,我终于在笨拙的代码下面出来了。

Private selenium As New ChromeDriver

Sub test()
Dim cell As Range
Dim keys As New selenium.keys
Dim pageNo As Integer

    pageNo = 0
    selenium.Start "chrome", "http://www.google.com/"
    For Each cell In Range("A1:A10")
        If pageNo >= 1 Then
            selenium.SendKeys keys.Control & "t" + keys.Control & "t"
            selenium.SwitchToNextWindow
        End If
        selenium.Get cell.Value
        pageNo = pageNo + 1
    Next
End Sub

提出的几个麻烦和问题:

>

  • 我很困惑为什么我必须发送2次“Ctrl+T”键才能成功打开新选项卡。

  • 共有1个答案

    易星宇
    2023-03-14

    我很困惑为什么我必须发送2次“Ctrl+T”键才能成功打开新标签。

    修饰键应该在第一个参数中,而键应该在第二个参数中:

    driver.SendKeys Keys.Control, "t"
    

    在您的情况下,更好的方法是使用一些JavaScript打开一个新窗口:

    Private Keys As New selenium.Keys
    Private driver As New selenium.ChromeDriver
    
    Sub test()
      Const JS_NEW_WINDOW = "window.open(arguments[0], name);"
    
      driver.Get "http://www.google.com/"
      For i = 0 To 9
        If i Then
          driver.ExecuteScript JS_NEW_WINDOW, "http://www.google.com/"
          driver.SwitchToNextWindow
          driver.FindElementById("lst-ib").SendKeys "some text " & i
        End If
      Next
    End Sub
    
    Dim driver As New Selenium.ChromeDriver
    driver.SetPreference "plugins.plugins_disabled", Array("Adobe Flash Player")
    For i = 0 To 9
      driver.Get "http://www.google.com/"
      Waiter.wait 500  ' waits 500ms
    Next
    
    Dim driver As Selenium.ChromeDriver
    
    Sub Main
      Set driver = New Selenium.ChromeDriver
      driver.Get "http://www.google.com/"
    
    End Sub
    
     类似资料:
    • 问题内容: 根据 文档: window_handles 返回当前会话中所有窗口的句柄。 但是,打开新标签页后,我看不到新句柄出现在列表中: 如您所见,具有相同的值,但是我看到在浏览器中打开了2个标签。我做错了什么吗?如果是,应该如何获取新标签的句柄? 使用: selenium2.44.0(最新) Firefox 35.0(最新) python 2.7.6 请注意,如果我要在Chrome中进行类似操

    • 问题内容: 我正在浏览一个Web应用程序,如果尝试单击某个元素之后才能与之交互,则该Web应用程序通常会引发错误。 使用Selenium WebDriver(java)时,我可以轻松解决此问题: 但是,我试图使用Selenium类型库在VBA中编写脚本,尽管尝试了许多不同的方法,但我唯一的成功是: 有人告诉我,应该尽可能避免这样做。如果有人可以建议如何将Java转换为VBA或提供任何其他解决方案,

    • 问题内容: 我必须登录SnapSurveys并每月下载20多个文件。现在已经是一个繁琐的过程,现在我必须每周执行一次,而手工完成将变得很繁琐,所以我想实现它的自动化并安装了Selenium来做到这一点。我已经使用SeleniumIDE(在FireFox中)跟踪了整个过程,所以我知道我想做的事情以及如何做的基础知识,但是,我遇到了一个难以理解的砖墙,试图理解该网页。实现它的结构。 使用Chrome和

    • 我想通过在selenium webdriver中按键盘键Ctrl打开chrome浏览器控制台。我可以使用Robot类来做这个动作,但我希望没有Robot类。我使用了Actions类和Keys类,使用的是sendKeys。但我无法打开浏览器控制台。 是chrome浏览器版本问题还是操作系统问题?为什么浏览器控制台没有使用Action类和Keys类打开?

    • 我试图用Python通过Selenium打开firefox控制台。如何使用python Selenium打开firefox控制台?有没有可能把钥匙发给司机或者类似的东西?

    • 硒的功能在哪里? 我在某个地方读到,语言绑定或API提供了胶水代码,以便在Java中使用Selenium。 胶合代码或绑定代码:连接不兼容的软件组件的代码。 null