Предостережение: ниже для селена основной VBA. Он использует библиотеку типов Selenium и основан на разработке @ florentbr с здесь . Синтаксис, который вы используете, заставляет меня думать, что вопрос потенциально помечен неверно, поскольку синтаксис, по большей части, предназначен для Селен IDE . Не уверен, что вы конвертируете скрипт? Я не помню, чтобы VBA был поддерживаемым языком для IDE, но ......
Заголовками Trello будет имя класса list-header-name
.
Я бы использовал быстрее .FindElementsByCss
Итак,
bot.FindElementsByCss(".list-header-name")
"." перед list-header-name
находится селектор класса css . Современные браузеры оптимизированы для этого.
,5
- это значение для аргумента minimum
; так как вы не использовали именованные аргументы, сопоставление будет позиционным. Третий аргумент будет timeout
. И minimum
, и timeout
являются необязательными.
Теперь, когда используется ключевое слово Set
, это для присвоения переменной объекта:
Dim titles As Object
Set titles = bot.FindElementsByCss(".list-header-name")
Вы не пытаетесь получить свойство одновременно. Попытка:
Set titles = bot.FindElementsByCss(".list-header-name").Count
должно привести к несоответствию типов ошибка.
Вы можете отдельно взять счетчик webElement из коллекции с помощью
Dim numberOfWebElements As Long
numberOfWebElements = titles.Count
Для trello есть идентификаторы, которые вы можете использовать для входа в систему. Я бы использовал их и метод SendKeys
Пример схемы:
Option Explicit
Public Sub SeleniumTutorial()
Dim bot As WebDriver, titles As Object, i As Long
Dim numberOfWebElements As Long, names(), t As Date
Const MAX_WAIT_SEC As Long = 10
Set bot = New ChromeDriver
With bot
.get "https://trello.com/login"
.Window.Maximize
.FindElementById("user").SendKeys "userName"
.FindElementById("password").SendKeys "passWord"
.FindElementById("login").Click
.FindElementByLinkText("Gestão de Pessoas", timeout:=5000).Click '< named argument
t = Timer
Do
On Error Resume Next
Set titles = bot.FindElementsByCss(".list-header-name")
numberOfWebElements = titles.Count
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While numberOfWebElements = 0
If numberOfWebElements = 0 Then Exit Sub
ReDim names(1 To numberOfWebElements)
For i = 1 To titles.Count
names(i) = titles.item(i).Text
Next
Stop 'delete me later
End With
End Sub