Selenium + VBA для управления Chrome
Я использую Селен + VBA, чтобы запустить Chrome, чтобы открыть 10 URL-адресов, перечисленных в диапазоне ячеек ("A1: A10"). Я не знаком с селеном, после многократных попыток я наконец-то оказался ниже неуклюжих кодов.
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
Несколько проблем и вопросов:
Я не понимаю, почему мне нужно дважды нажать клавиши «Ctrl + t», чтобы успешно открыть новую вкладку.
Почему я должен добавить selenium.SwitchToNextWindow после открытия новой вкладки, или следующий URL будет открыт на исходной вкладке, а не на новой вкладке?
Довольно часто после открытия 3 ~ 5 URL-адресов vba выскакивает ошибка "недостаточно памяти" и перестает загружать следующий URL-адрес. Но если я запускаю коды построчно в среде отладки, все 10 URL могут быть успешно открыты. Почему это?
Я гуглил, что если я хочу, чтобы chrome не выходил после завершения работы макроса, я должен объявить объект селен вне подпрограммы, хотя я не совсем понимаю причину. Может ли кто-нибудь помочь объяснить мне простым способом?
Если какие-либо эксперты могут помочь мне оптимизировать мои коды, это будет очень цениться! У меня система Win7 64bit + Excel 2010.
Спасибо с наилучшими пожеланиями.