【发布时间】:2016-05-28 17:57:15
【问题描述】:
我使用 selenium + vba 启动 chrome 以打开单元格范围(“A1:A10”)中列出的 10 个 url。 我对 selenium 不熟悉,在尝试了很多次之后,我终于摆脱了笨拙的代码。
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”键才能成功打开新标签页。
为什么我打开新标签后必须添加 selenium.SwitchToNextWindow,否则下一个 url 会在原来的标签上打开,而不是新标签?
经常打开 3~5 个 url 后,vba 会弹出“内存不足”错误并停止加载下一个 url。但是如果我在调试环境中逐行运行代码,10个url都可以成功打开。为什么会这样?
我在谷歌上搜索过,如果我希望 chrome 在完成宏运行后不退出,我必须在 sub 之外声明对象 selenium,尽管我不太明白原因。谁能帮我简单解释一下?
如果有专家可以帮助我优化我的代码,将不胜感激!我的系统是Win7 64bit + Excel 2010。
致以最诚挚的谢意。
【问题讨论】:
标签: excel vba google-chrome selenium